看了一段委托的教程,明白了一些含义,类似于c/c++中的函数指针。
为什么要这么用? 引入委托的意义是什么?有待于探讨
[收藏]
1 委托语法
public delegate void Del(string message);
//声明了一个名为 Del 的委托,该委托可以封装一个采用字符串作为参数并返回 void 的方法
实例化委托后,委托将把对它进行的方法调用传递给方法。调用方传递给委托的参数被传递给方法,来自方法的 返回值(如果有)由委托返回给调用方。
2 异步回调
方法便可以将一个委托作为参数来接受,并且以后可以调用该委托
public void MethodWithCallback(int param1, int param2, Del callback)
{
callback("The number is: " + (param1 + param2).ToString());
}
MethodWithCallback 不需要直接调用控制台 -- 设计它时无需考虑控制台。MethodWithCallback 的作用只是准备字符串并将该字符串传递给其他方法。此功能特别强大,因为委托的方法可以使用任意数量的参数。
3 多路广播
MethodClass obj = new MethodClass();
Del d1 = obj.Method1;
Del d2 = obj.Method2;
Del d3 = DelegateMethod;
使用加法运算符或加法赋值运算符(“+”或“+=”)添加委托
Del allMethodsDelegate = d1 + d2;
allMethodsDelegate += d3;
//调用 allMethodsDelegate 时,将按顺序调用所有这三个方法。
4 委托之所用
多路广播委托广泛用于事件处理中。事件源对象向已注册接收该事件的接收方对象发送事件通知。为了为事件注册,接收方创建了旨在处理事件的方法,然后为该方法创建委托并将该委托传递给事件源。事件发生时,源将调用委托。然后,委托调用接收方的事件处理方法并传送事件数据。