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.触发事件

         未完待续。。。。。。。

         

  • 相关阅读:
    Chrome 过滤广告插件暂替办法
    IE8.1将支持Firefox插件,Gecko和Webkit引擎
    Adobe与Facebook联手推出Flash开发工具
    Google Chrome Greasemetal
    vmware虚机下的linux集群
    新版Safari浏览器胜在速度
    Fedora 11 Beta发布
    Sun宣布本周裁员1500人 或为IBM收购做准备
    Opera Mobile9.7将支持Flash Lite和Google Gears
    Red Hat CEO:桌面Linux无用
  • 原文地址:https://www.cnblogs.com/slpa/p/7523706.html
Copyright © 2011-2022 走看看