Ну, может быть Max
не имеет побочных эффектов, и вы не можете это заметить?Когда вы выполняете многоадресный делегат, он возвращает результат только последнего делегата.
Попробуйте это:
Func<int, int, int> funHandler = (x, y) => { Console.WriteLine(x); return x; };
funHandler += (x, y) => { Console.WriteLine(y); return y; };
int res = funHandler(1, 2);
Console.WriteLine(res);
Видите?это работает
Чтобы использовать список вызовов, сделайте следующее:
foreach (var v in funHandler.GetInvocationList())
{
((Func<int, int, int>)v)(1, 2);
}
Или:
foreach (Func<int, int, int> v in funHandler.GetInvocationList())
{
v(1, 2);
}