委托和事件

一·委托

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

     未完待续。。。。。。。

 

     

posted @ 2017-09-14 22:51  ~波妞~  阅读(121)  评论(0编辑  收藏  举报