什么是委托?
1、委托的本质就是一个密封类,这个类继承了MulticastDelegate(多播委托)
2、委托的构造函数,有两个参数,一个类型是IntPtr,用来接收方法的
3、可以同步调用(Invoke),也可以异步调用 (BeginInvoke、EndInvoke)
注:
1、多播委托:一个委托可以代表多个相同签名的方法,当委托被调用时,这些方法会依次执行
2、IntPtr表示窗口的时候,叫它“句柄”,表示方法时,叫它“指针”
3、异步调用:会产生一个线程,异步执行
委托有什么用?
在js中,并没有提委托的概念,却有“回调”,比如ajax回调。把一个函数传递到另外一个函数里执行,是非常自然的事情。但是在c#中,不能直接把方法名传递进去。所以创造了委托这么个类型。c#中的委托也是为了回调。委托有什么好处?举个例子:皇帝颁发圣旨,得派一个大臣去。大臣到了目的地,宣读圣旨后,这才得以执行。这说明以下两点:
1、委托有很好的封装性
2、委托的实例化与它的执行是在不同的对象中完成的