在"委托、Lambda表達式、事件系列02,什么時候該用委托"一文中,使用委托讓代碼簡潔了不少。
namespace Consoleapplication2{internal delegate bool MyCalculateDelegate(int val);class PRogram{static void Main(string[] args){IEnumerable<int> source = new List<int>(){2, 3, 4, 5, 6, 7, 8, 9,10, 11};MyCalculateDelegate del = LessThanFive;var result = GetNumbers(source, del);foreach (int n in result){Console.WriteLine(n);}}static IEnumerable<int> GetNumbers(IEnumerable<int> numbers, MyCalculateDelegate del){foreach (int number in numbers){if (del(number)) yield return number;}}static bool LessThanFive(int val){return val < 5;}static bool LessThanTen(int val){return val < 10;}}}
可是,以上LessThanFive方法和LessThanTen方法的輸入參數、輸出類型、以及實現邏輯都是一致的,有沒有一種形式可以替代它們?這正是Lambda表達式登場的時候!Lambda表達式是匿名委托,以=>分隔,左邊是輸入參數,右邊是實現過程。
namespace ConsoleApplication2{internal delegate bool MyCalculateDelegate(int val);class Program{
新聞熱點
疑難解答