多播委托中的方法调用的顺序与增加方法时的顺序是一致的。
多播委托中,如果其中的某个方法执行发生了异常,后面的方法不再执行。
使用多播委托时,如果不是用+=而是直接使用==,赋值会将前面绑定的所有其他方法(委托)都覆盖掉。
通过GetInvocationList()方法可以获取到多播委托中的每个委托对象,虽然看起来是一个委托对象,其实是一个委托数组。


委托的不可变性:
a.委托具有类似于String一样的不可变性。
b.建议使用委托的时候尽量少定义自己的委托。使用系统中已经有的委托,减少程序集中定义的类型个数。
委托的小总结:
1.委托是类型。
2.委托是引用类型。
3.使用委托的时候必须new 一个委托对象,即便看到的代码没有new委托对象,编辑器也会在编译的时候帮我们new,赋值给委托的方法,其实是存储在委托的对象中的。
4.委托使用的步骤:
a.定义一个委托;
b.声明一个委托变量;
c.调用委托;
5.什么情况下用委托?委托用什么作用?
简要的说就一句话“在代码中动态嵌入一个方法”。
当一个类型中需要嵌入一段代码,但是这段代码有不确定性,是根据使用这个类型的用户来确定其代码的,这种情况下就可以在该类型中,使用一个委托,保证在某种情况下会调用该委托,这时,用户将对应的方法传递给改委托,则就会调用这个方法。
自定义控件的时候会大量的使用委托(写事件的时候会用到委托)。
可以把静态方法或私有方法赋值给委托变量,赋值后,只要能使用到改委托变量的地方就能使用该方法,打破了访问修饰符的限制。
网友评论