2017年1月2日 星期一

Extension Method

目的:
讓我們在不修改原始程式,為類別增加新函式。



Enumerable.Range(1, 3)
          .Select(x => x * 2)
          .ToList()
          .ForEach(x => Console.WriteLine(x.ToString()));


Enumerable.Range() 產生 1、2、3
Select() 2、4、6
ForEach() 列印在畫面上

因為 List 才有 ForEach()
所以先 ToList()
再 ForEach()

這邊可以利用 Extension Method
幫 IEnumerable 打造一個 ForEach()




namespace ConsoleApp
{
    public static class Extensions
    {
        internal static void ForEach<t>(this IEnumerable<t> source, Action<t> action)
        {
            foreach (T element in source)
                action(element);
        }
    }
}


整理一下
第一、第一個參數 this IEnumerable 特別加了 this 且 class 或 interface
第二、Extension Method 必須都為 static method




Enumerable
          .Range(1, 3)
          .Select(x => x * 2)
           .ForEach(x => Console.WriteLine(x.ToString()));


用了 Extension Method 後這樣就能拿掉 ToList()

沒有留言:

Visual Studio 2017/2019 推薦的擴充功能與更新

參考文章: 覺得 Google 的 Blogger 不太順手?透過 HTML 的 iframe 移花接木 HackMD