什么是委托?
委托和事件这两个概念是完全配合的。委托仅仅是函数指针,那就是说,它能够引用函数,通过传递地址的机制完成。委托是一个类,当你对它实例化时,要提供一个引用函数,将其作为它构造函数的参数
先看示例:
例中先申明一个委托,
例如:
public delegate void SomeDelegate(string str, bool b);
在这里,提及的签名,就是说SomeDelegate 这个委托 有 string 和 bool 类型的形参。
例中:对委托实例化时,要提供一个引用函数,将其作为它构造函数的参数。
注意:被引用的这个函数必须和委托有相同的签名。即:
class CallClass {
public static void SomeFunction(string str, bool b)
{
Console.WriteLine("this is {0} is {1}",str,b);
}
}
把SomeFunction这个函数传给SomeDelegate的构造函数,因为他们有相似的签名(他们都有相同的形参类型和个数,并且相同数据类型);
SomeDelegate sd =new SomeDelegate(CallClass.SomeFunction);
sd 引用了 SomeFunction,也就是说,SomeFunction已被sd所登记注册,如果你调用 sd,SomeFunction 这个函数也会被调用.最后示例通过Display方法用控制台打印出来:
static void Display(SomeDelegate call, bool value)
{
call("OK", value);
}