C#中的委托(delegate),类似于C/C++中的函数指针,它允许你传递一个类A的方法m给另一个类B的对象,使得类B的对象能够调用这个方法m,其传递的是一个方法。
委托在多线程编程,定义事件,事件处理函数中使用.委托可以看作封装以前C++中的函数指针的一些信息,在类型上更安全.它是线程上的调用,可以不理会调用事件是否成功执行.
委托的好处就是可以动态的改变调的函数。
实现一个delegate是很简单的,通过以下3个步骤即可实现一个delegate:
1. 声明一个delegate对象,它应当与你想要传递的方法具有相同的参数和返回值类型。
2. 创建delegate对象,并"将你想要传递的函数作为参数传入",即委托与方法绑定。
3. 在要实现异步调用的地方,通过上一步创建的对象来调用方法。
例子:
另外,委托可以添加一系列方法,通过 += 或 -= 来添加或删除委托所绑定的方法
一个委托,比方说叫Dele
Dele = a;
Dele += b;
Dele += c;
添加了函数,那么着三个函数会被依次执行
Dele -= b;
相当于从这个列表里把b删除了,只执行a,c
这个委托变量必须先用 = 赋值一次,才可以进行+=赋值,-=可以任意撤销委托