Catégories : Tous - 方法 - 靜態

par 余小章 's Il y a 8 années

610

C# 擴充方法

擴充方法是一種特殊的靜態方法,使開發者能在不修改原有類別或重新編譯的情況下,為現有類別增加功能。這些方法需宣告為靜態類別及靜態方法,並使用 `this` 修飾詞來擴充目標型別。擴充方法廣泛應用於實作 Fluent Interface 及 LINQ 中,尤其是在處理集合物件時。由於擴充方法不會改變原有類別的核心結構,這符合軟體設計中的開放封閉原則。然而,開發者需謹慎管理擴充方法,避免方法名稱衝突,以防止難以除錯的情況發生。

C# 擴充方法

擴充方法 (Extension Methods)

實作

引用 using 擴充方法的命名空間
統一管理,散落在四處的擴充方法,可能會發生方法名稱衝突
宣告成靜態方法,第一個參數代表欲擴充的型別,並加上this修飾詞

public static bool IsAllNumber(this string str)

{

return str.All(char.IsNumber);

}

宣告成靜態類別

public static class MyExtension

{

}

Fluent Interface 實作的另一種方式
Sample:SimpleExtend

注意事項:

擴充方法須被管控,萬一有名稱衝突,很難除錯
不要針對 System.Object 型別進行擴充

為什麼要用擴充方法?

實例:微軟運用擴充方法,將舊有的集合物件增加功能
只要類別有實作 IEnumerable 並引用System.Linq 就能享有擴充方法
LINQ to Objects 的方法內容,大部分都寫在 System.Linq 裡的Enumerable 這個 static class 中,絕大部分,都是針對IEnumerable 這個泛型介面進行擴充
不會破壞既有的類別的原始核心,符合開放、封閉原則
擴充方法讓您能將方法「加入」至現有型別,而不需要建立新的衍生型別 (Derived Type)、重新編譯,或是修改原始型別;也就是說在沒有原使碼的情況之下,也能為型別進行擴充
擴充方法是一種特殊的靜態方法,但是需將它們當成擴充型別上的執行個體方法 (Instance Method) 來呼叫