下面的代碼結合代表
Func<int, int> DoWork;
DoWork = x => x + 5; // ignored
DoWork += y => y + 1; // used
Console.WriteLine(DoWork(2)); // 2 + 1 = 3
返回3,因爲只有最新添加的拉姆達正在處理 - 以前的方法被忽略。在Action<>
的情況下,正在處理所有方法。
問題:是否有用於「添加」/ Delegate.Combine
Funcs的用例,當每次添加另一個委託時都會覆蓋前一個?
你可以通過DoWork = y => DoWork(y)+ 1來將當前的DoWork封裝在一個新的labmda中,而這個新的labwork又成爲了新的DoWork。 – SimpleVar 2015-02-11 13:18:00