定义
C#委托实际上是一种引用类型,它类似函数指针,使我们可以将方法当作参数来传递。
本质
委托使用简单,然而实际情况却很复杂,只是编译器和CLR做了大量的工作来隐藏它的复杂性。
我们看看编译器和CLR如何实现委托
创建一个委托
public delegate void DrinkWater(int x);
通过Reflector反编译后
internal class DrinkWater : System.MulticastDelegate
{
//构造器
public DrinkWater(Object object, IntPtr method);
//方法的原型与源代码制定的相同
public virtual void Invoke(Int32 value);
//允许异步回调的方法
public virtual IAsyncResult BeginInvoke(
Int32 value, AsyncCallback callback, Object object);
public virtual void EndInvoke(IAsyncResult result);
}
例子
结果

浙公网安备 33010602011771号