【发布时间】:2013-01-22 16:32:40
【问题描述】:
让我们想象一下简单的委托调用:
void Main()
{
Func<int, int, string> tfunc = null;
tfunc += Add; // bind first method
tfunc += Sub; // bind second method
Console.WriteLine(tfunc(2, 2));
}
private string Add(int a, int b)
{
return "Add: " + (a + b).ToString();
}
private string Sub(int a, int b)
{
return "Sub: " + (a - b).ToString();
}
这个程序的结果是:
Sub: 0
那么,为什么没有调用 Add 方法呢?我期待调用方法 Add,然后 然后 方法 Sub。
【问题讨论】:
-
当调用一个有返回值的委托时,只有最后执行的委托返回一个值给调用代码。在这种情况下,首先调用的
Add的返回值被随后执行的Sub委托丢弃。