単純なデリゲート呼び出しを想像してみましょう。
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を呼び出すことを期待しています。