本文來說明一下C#中的擴充方法要怎麼使用,還有它的注意事項
1. 建立的擴充類別的要使用靜態,要新增擴充的方法也要使用靜態
2. 擴充類別的名稱可以考慮使用「被擴充類別的名稱+Extension』,例如Int32Extension.
3. 擴充的方法輸入參數至少要有一個被擴充型別的參數,而這個參數要用「this 被擴充型別 參數名』,例如Int32被擴充,要你的輸入參數就要有「this int value』.
來看一下例子
using System;
using System.Linq;
namespace ExtensionMethod
{
class Program
{
static void Main(string[] args)
{
Original oclass = new Original();
oclass.PrintToScreen(123);
oclass.PrintMoneyToScreen(123);
Console.ReadKey();
}
}
public class Original
{
public void PrintToScreen(int value)
{
Console.WriteLine(value);
}
}
public static class OriginalExtension
{
public static void PrintMoneyToScreen(this Original obj, int value)
{
Console.WriteLine(value.ToString("$###,###,###,#0"));
}
}
}
黃色的部分就是被擴充的類別,綠色的部分就是擴充類別,而PrintMoneyToScreen()就是擴充方法,this Original obj是第一個參數,也是必要參數,擴充和被擴充利用這個參數產生關係,而第二個int vlaue就是我預計要傳入的參數.
執行結果如下
123
$123
使用擴充方法輸出螢幕就使用錢的格式了.
你會說為什麼要這麼麻煩呢??不是只要弄個方法就能解決了,幹麻一定要用擴充方法呢??
因為物件導向有時你會遇到外部程式DLL,你不見得有原始碼,或者封裝後,你要進行功能的擴充,這時擴充方法就是你的好朋友了.