擴充套件方法使你能夠向現有型別「新增」方法(oc的類目與此相似),而無需建立新的派生型別、重新編譯或以其他方式修改原始型別。
擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫。
擴充套件方法被定義為靜態方法,但它們是通過例項方法語法進行呼叫的。
它們的第乙個引數指定該方法作用於哪個型別,並且該引數以 this 修飾符為字首。
下面的示例演示為 string 類定義的乙個擴充套件方法。
請注意,它是在非巢狀的、非泛型靜態類內部定義的:
public static class extensionmethods
} return count;
}}
上述為string 類新增了乙個擴充套件方法,主要用於查詢某個字串中有多少個指定字元;
可以這樣使用:
string str = "abcaaa";
int count = str.findcharcount('a');
輸出count 為4;
擴充套件方法是在編譯時被繫結的:
可以使用擴充套件方法來擴充套件類或介面,但不能重寫擴充套件方法。
與介面或類方法具有相同名稱和簽名的擴充套件方法永遠不會被呼叫。
編譯時,擴充套件方法的優先順序總是比型別本身中定義的例項方法低。
換句話說,如果某個型別具有乙個名為
process
(inti)
的方法,而你有乙個具有相同簽名的擴充套件方法,則編譯器總是繫結到該例項方法。
當編譯器遇到方法呼叫時,它首先在該型別的例項方法中尋找匹配的方法。
如果未找到任何匹配方法,編譯器將搜尋為該型別定義的任何擴充套件方法,並且繫結到它找到的第乙個擴充套件方法。
參考:
C 類的擴充套件
假設我們的設計是基於三層架構,現在我們想在服務層 業務邏輯層曾加一些功能,可以說是一些新的函式,我們會把相對應的類進行擴充套件而不必修改原類的類的任何 避免不必要的出錯。namespace dowork public dowork getaction actionaction public dowo...
C 類擴充套件方法
擴充套件方法使你能夠向現有型別 新增 方法,而無需建立新的派生型別 重新編譯或以其他方式修改原始型別。擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫下面以乙個 例子說明 定義乙個npc 類 定義 npc 類 public class npc 定義字段變數對應的屬性 p...
C 擴充套件系統類方法
1 宣告擴充套件方法的步驟 類必須是static,方法是static 2 第乙個引數是被擴充套件的物件,前面標註this 3 使用擴充套件方法的時候必須保證擴充套件方法類已經在當前 中using 例子 using system using system.collections.generic usi...