什么是委托?
安全的函数指针
就是一个能存放符合某种格式(方法签名)的方法的指针的清单
委托创建方法
1. 准备一个方法: string HelloU (string name) { }
2.声明委托:delegate 返回值类型 委托类型名(参数)
例子:delegate string DGSayHi ( string Name );
3.创建委托对象 :DGSayHi dgSay=new DGSayHi ( HelloU );
或者: DGSayHi dgSay = HelloU;
4.追加方法: dgSay+=HelloU2;
5.删除方法:dsSay-=HelloU3;
委托调用方式
dgSay (" binggo"); //
dgSay.Invoke("binggo");
我们创建了一个方法,内存为这个方法开辟一个空间, 分配给该空间一个编号地址,有个指针指向这个地址,根据这个指针找到内存中的地址,因为委托签名要一致才能调用,从安全角度出发,委托是安全的.
C语言 的指针是不安全的,可以随便生成的 ,一不小心就指向其他系统文件地址
事件
事件是委托的一个特殊实例,私有的委托,,比委托安全,委托说穿就是一个类,在类里定义一个事件,只能在该类下进行调用
Fun<>委托 调用有返回值
Action<>委托 调用没有返回值
为什么微软要提供这2个委托?
因为避免重复调用相同签名委托