我正在阅读一本名为《C# 2012图解》的书,其中有一个关于合并委托的章节。你是否注意到了?委托的目的是不可变的。
合并委托 到目前为止,你所看到的所有委托都只有一个方法在其调用列表中。可以通过使用加法运算符来“合并”委托。操作的结果是创建一个新的委托,其调用列表是两个操作数委托的副本串联而成。例如,以下代码创建了三个委托。第三个委托是由前两个委托组合而成的。
尽管“组合委托”这个术语可能会让人误以为操作数委托被修改了,但它们实际上并没有改变。事实上,委托是不可变的。创建委托对象后,它不能被更改。图15-6说明了前面代码的结果。请注意,操作数委托保持不变。
合并委托 到目前为止,你所看到的所有委托都只有一个方法在其调用列表中。可以通过使用加法运算符来“合并”委托。操作的结果是创建一个新的委托,其调用列表是两个操作数委托的副本串联而成。例如,以下代码创建了三个委托。第三个委托是由前两个委托组合而成的。
MyDel delA = myInstObj.MyM1;
MyDel delB = SClass.OtherM2;
MyDel delC = delA + delB; // Has combined invocation list
尽管“组合委托”这个术语可能会让人误以为操作数委托被修改了,但它们实际上并没有改变。事实上,委托是不可变的。创建委托对象后,它不能被更改。图15-6说明了前面代码的结果。请注意,操作数委托保持不变。