例如:
delegate void SomeDelegate();
SomeDelegate a = new SomeDelegate( () => Console.WriteLine("A") );
SomeDelegate b = new SomeDelegate( () => Console.WriteLine("B") );
SomeDelegate c = a + b;
在最后一行,什么是a + b
翻译成?我只是好奇如何在不使用的情况下添加它们+
操作员。
http://msdn.microsoft.com/en-us/library/ms173172(v=VS.80).aspx- 搜索添加:
委托在被调用时可以调用多个方法。这是
称为多播。向委托添加额外的方法
方法列表——调用列表——只需要添加两个
使用加法或加法赋值运算符(“+”或
'+=')。例如:
MethodClass obj = new MethodClass();
Del d1 = obj.Method1;
Del d2 = obj.Method2;
Del d3 = DelegateMethod;
//Both types of assignment are valid.
Del allMethodsDelegate = d1 + d2;
allMethodsDelegate += d3;
此时allMethodsDelegate中包含了三个方法
调用列表 — Method1、Method2 和 DelegateMethod。原本的
三名代表 d1、d2 和 d3 保持不变。什么时候
allMethodsDelegate 被调用,所有三个方法都按顺序调用。
如果委托使用引用参数,则传递引用
依次对这三种方法中的每一种进行操作,并且任何更改
一个方法对下一个方法可见。当任何一种方法
抛出一个未在方法内捕获的异常,即
异常被传递给委托的调用者,并且没有后续的
调用调用列表中的方法。
Update
两位代表均来自系统委托您可以使用combine()
将两个委托添加在一起的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)