zoukankan      html  css  js  c++  java
  • 委托和事件

    一·委托

    1.什么是委托?

        (1) 委托是一个对象把处理的事物,交给另一个对象的处理过程。

         (2) eg:

                   string  name   :   string是name的值类型

                    委托是一种方法的类型,将方法作为另一个方法的参数进行传播,可以通过委托实例调用方法。

    2.定义委托:

                delegate   void   Test(string name)   (只是在定义普通函数前多了一个 delegate)

                 Test就是一个委托类,通过创建对象,代理其它对象的方法

    3.异步启动:

    class Program

    {
    static bool chuli(int number)
    {
    for(int i=2;i<number;i++)
    if(number/i==0)
    return false;
    return true;
    }
    static void huidiao(IAsyncResult result)
    {
    //封装对异步操作的结果
    AsyncResult r = (AsyncResult)result;
    object o = result.AsyncState;
    D d1 = (D)r.AsyncDelegate;
    bool b = d1.EndInvoke(result);
    if (b)
    Console.WriteLine("{0}是质数", o);
    else
    Console.WriteLine("{0},不是质数", o);
    }
    //定义委托类型
    delegate bool D(int number);

    static void Main(string[] args)
    {
    //创建委托对象,并关联方法
    D d = new D(chuli);
    //关联回调的方法
    AsyncCallback callback=new AsyncCallback(huidiao);
    //1·异步启动处理后,自动调用callback委托方法
    //2·把d和n封装成AsyncResult,传递给callback委托的方法
    int n=17;
    d.BeginInvoke(n, callback, n);

    for (int i = 0; i < 10; i++)
    Console.WriteLine("主线程:{0}", i);
    }
    }
    }

    3.多播委托:  一个委托对应多个方法

                

    二·事件

    1.声明事件前,先声明委托类型:

         public delagate  void  action(string name);

    2.基于上面的委托,定义事件——event

         public event action  play;

         (上面定义了action这个委托,play这个事件,该事件的生成会调用委托)

    3.触发事件

         未完待续。。。。。。。

         

  • 相关阅读:
    英文哲理短句
    经历的一次诈骗
    英文哲理短句
    反思对待新人的方式
    Java 开源报表制作
    现在开始写字
    关于Visual C++ 6.0的调试技巧和经验总结
    一步一步教你实现CTreeCtrl 自绘
    VC中动态加载ODBC解决方法
    VC++程序编译链接的原理与过程
  • 原文地址:https://www.cnblogs.com/slpa/p/7523706.html
Copyright © 2011-2022 走看看