最近学习委托和事件呢,所以总结一下这两个,这两个要仔细分析下。
委托(delegate)
委托声明定义了一种类型,它用一组特定的参数以及返回类型来封装方法。对于静态方法,委托对象封装要调用的方法。对于实例方法,委托对象同时封装一个实例和该实例上的一个方法。如果您有一个委托对象和一组适当的参数,则可以用这些参数调用该委托。
委托可以在程序运行时传入方法的名称。
用委托方法调用方法。
委托必须和方法返回值类型一样,参数类型也必须一样。
委托连实现一次行调用。
事件(event)
事件是类发生在其关注的事情时用来提供通知的一种方式。例如,封装用户界面控件的类可以定义一个在用户单击该控件事发生的事件。控件类不关心单击按钮时发生了什么,但它需要告知派生类单击事件已发生。然后,派生类可选择如何响应。
事件和方法的区别:
委托(代表)delegate,是.Net提供的一种引用类型,可以用来引用函数,使用委托,可以实现函数回调、异步回调等,提高程序设计的灵活性。
委托的概念有点像c/c++的指针函数。
事件,event,其实就是委托,明确地说是多播委托,就是一个委托可以指向多个函数,并分别回调这些函数。事件用在类中,用来实现一种通知机制,即告知外部,当前类的状态。
方法,就是函数了,和其他语言的概念一样。
举个例子:
定义委托:
delegate int FuncEventHandler(int i);
用这个委托定义事件:
event FuncEventHandler Func;
用匿名函数给事件赋值:
Func += delegate(int i){return i++;};
异步回调函数(后面两个参数用于指定异步回调返回时再次回调的委托,可以忽略):
Func.BeginInvoke(1, null, null);
事件的声明委托,观察事件机制。