先臨時記一下,回頭再細說。
有些時候,我們拿到的dll是無法修改的,其中的類也無法修改,更無法增加它的方法,比如系統類型string。擴展方法給我們提供了一個在既有類中增加方法的途徑。使用擴展方法後,就可以在既有類中增加方法。
比如:
public static string func(this string a) { return "喜馬拉雅山" + a; }
這樣就使引用了這個類的類中的string類有了一個func方法,這個方法以字符串實例爲參數,返回處理結果,此處是“喜馬拉雅山”+a
如:
public class A { public test(){ string a = "abc"; Console.WriteLine(a.func()); } }
這裏的a,神奇地擁有了func()方法。關鍵就在於public string func(this string a)中this後面的那個類,寫的是哪個類,就能讓哪個類擁有這個方法。如果這樣寫public T func<T>(this T a),就有讓所有類都有這個方法
調用這個test方法,會在控制檯上輸出“喜馬拉雅山abc”,也就是“喜馬拉雅山”+a的結果。
也可以理解爲我們給string這個類增加了一個方法。