1、什么是委托?
首先声明一个委托: public delegate string IsLengthFive (string s);
下面写几个方法:
public string DoWork(string a){};
public string DoSomeWork(string b){};
public string DoNothing(string c){};
委托是一个类型,它代表着签名相同的一类方法。所谓签名相同也就是方法的返回值相同,方法的参数列表相同。
举例帮助理解(string name = "a"; 在这里string定义了name参数所能代表的值的类型,也就是name参数的类型。在上面例子中的委托IsLengthFive 代表着返回类型为string,参数是一个string类型的所有方法)
2、委托的使用
使用委托前要声明委托变量,首次声明委托变量有两种方式:
a01:IsLengthFive stringLength;
stringLength = DoWork; ///首次先给委托变量赋值
stringLength += DoSomeWork; ///使用 += 方法给委托变量stringLength绑定方法
stringLength += DoNothing;
经过上面的操作此时的 stringLength 已经有三个方法可以进行调用了
a02:IsLengthFive stringLength = new IsLengthFive();
stringLength += DoWork; //首次直接绑定方法到变量上
stringLength += DoSomeWork;
stringLength += DoNothing;
此时的stringLength也代表了三种方法,进行 -= 操作:stringLength -= DoNothing; ,将DoNothing方法解除绑定
为什么要使用委托?
使用委托可以将同类型的方法绑定到同一个变量上,当调用此变量时就可以一次调用绑定的方法,很方便。
什么是事件?(属性对字段进行封装)
事件是由 event 关键字修饰的委托————那么事件的本质就是一种委托
声明一个事件就好比声明了一个进行了封装的委托类型的变量!
匿名方法在委托中的使用