委托
委托:
定义
A delegate is a type that represents references to methods with a particular parameter list and return type.
When you instantiate a delegate,you can associate with any method with a compatible signature and return type.
You can invoke (or call) the method though the delegate instance.
一个委托是一种类,可以指向一个或者多个方法,(这个委托有参数列表和返回值类型)。当你实例化一个委托后,即创建委托的实例,这个委托类型的实例,可以和任何其他方法相关联起来,即可以存储这些方法的引用,【只要】类型兼容(任何方法他们的签名和返回值与委托类型的签名和返回值保持一致,即类型兼容)。你可以直接调用这些方法,通过委托的实例。
【委托就是将方法给委托,用委托来调用方法,通过+=,-=给委托添加或者减少方法,匿名函数只使用一次。】
委托的由来:
委托是一个类,继承自system.multicastdelegate,这是一个特殊类,不能声明类型来继承,只能声明委托来自动继承,编译器限制,所以委托虽然是一种类,但是不能用声明类的方式去声明。委托封装一个方法叫单播委托,多个方法叫多播委托。【多播委托一般用来调用无返回值的方法,不用来调用有返回值的方法,因为有返回值的多播委托中间的结果都会被丢弃掉,只剩最后一个。】
反编译工具IL:IL中间语言(C#--IL---计算机二进制)C#是等价于IL的,IL是一个很好的工具,没有编辑器没有编译器的方便。
系统自带的两种委托:
通过委托调用方法,是间接调用,有两种存在的两种委托:Action泛型委托可以指向一个没有返回值,但是可以有参数(16个)也可以没有参数的方法。Func委托是指向一个有返回值,参数(16个)可以有也可以没有的方法。
调用时,相当于执行了方法,为啥用委托?
委托可以把方法包裹成变量,Invoke时会调用这个方法