[ LINQ - 實作擴充方法紀錄 ]

  • 27
  • 0

* 本片筆記出自MV5網站開發美學的一小段實作

.NET Framework 泛型集合類別都有實作 IEnumerable<T>,所以.NET Framework 的集合物件都能使用 LINQ 查詢方法處裡

System.Linq 裡面有一個 Enumerable 的靜態類別,可在現有的類別之下擴充類別的功能,且不需修改原來的程式碼。

ex:先決定要擴充哪個類別的實作擴充方法,並建立一個靜態類別,擴充法方名稱建議為

   要擴充的類別名稱+Extension(延伸、擴充)

注意:1.擴充方法必須為靜態static方法,且不能與現有方法命名衝突

   2.此方法必須有一個擴充型別參數,如果有兩個以上的參數,擴充型別必須為第一個參數,且不能有預設值 

以下實作:

public static class Int32Extension
{
   public static string FormatForMoney(this int Value)
   {
     return Value.ToString("$###,###,###,##0");
   }

   public static string FormatForMoneyToName(this int Value, string Name)
   {
     return string.Format("{0} 給 {1}", FormatForMoney(Value), Name);
   }
}

public static class DoubleExtension
{
  public static string FotmatPercent(this double Value)
  {
    return Value.ToString("0.00%");
  }
}
static void Main(string[] args)
{
   int money = 123456789;
   double p = 0.1029;

   Console.WriteLine("{0}", money.FormatForMoney());
   Console.WriteLine("{0}", p.FotmatPercent());
   Console.WriteLine("{0}", money.FormatForMoneyToName("Nick"));
}

實際印出: