C 類擴充套件方法

2021-08-21 19:09:25 字數 1281 閱讀 3130

擴充套件方法使你能夠向現有型別「新增」方法,而無需建立新的派生型別、重新編譯或以其他方式修改原始型別。擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫
下面以乙個**例子說明

定義乙個npc 類

// 定義 npc 類

public class npc

//定義字段變數對應的屬性

public int npcid

set

}public string name

set

}}

使用npc 類的時候想呼叫乙個同時設定 npcid 和 name 的方法,但是定義 npc 類的時候沒有寫這樣乙個方法。怎麼辦呢,可以直接在 npc 類中新增乙個這樣的方法,也可以從npc 類派生出乙個 子類,然後在子類中新增乙個滿足需求的方法。還有一種方法就是今天要說的直接在 npc 類中擴充套件出乙個方法。
下面**直接給 npc 類擴充套件出來乙個新的方法

// 擴充套件 npc 類

public static class extendnpc

}

使用如下

class program

}

上面方法輕鬆實現給 npc 類新增乙個setidname方法

擴充套件方法要點: 

一、定義的擴充套件類必須為靜態類如上 

public static class extendnpc

二、定義的擴充套件方法必須為靜態方法如上 

public static void setidname(this npc npc, int id, string name)

三、擴充套件方法的第乙個引數必須使用this指定該方法用於那種型別如上setidname(this npc npc, int id, string name)該方法只能 npc 類的物件呼叫。

四、如果 npc 類本身已經定義了乙個setidname方法,則擴充套件方法中的setidname無效,即如果擴充套件方法與該型別中定義的方法具有相同的簽名,則擴充套件方法永遠不會被呼叫。

建議: 

只建議你無法更改源**來擴充你需要的方法時實現擴充套件方法,並謹慎地實現。只要有可能,最好重構原始類,或從現有類派生子類來達到這一目的。使用類源**的更改可能會導致擴充套件方法失效。

C 擴充套件系統類方法

1 宣告擴充套件方法的步驟 類必須是static,方法是static 2 第乙個引數是被擴充套件的物件,前面標註this 3 使用擴充套件方法的時候必須保證擴充套件方法類已經在當前 中using 例子 using system using system.collections.generic usi...

C 擴充套件方法和靜態類詳解

1.靜態方法屬於類,而普通方法則屬於物件,因此靜態方法可以用類名.靜態方法 來呼叫,而普通方法則必須用new來例項化後呼叫 2.靜態類中只能有 靜態的方法,屬性和變數 3.普通類中能有普通方法,也能有靜態類。在呼叫裡面的靜態方法時,可以使用普通類名.靜態方法來呼叫,不需要例項化類 擴充套件方法 擴充...

C 3 0 新增擴充套件方法擴充套件現有類

擴充套件方法是c 3.0的又乙個特性,它允許開發人員在不建立派生型別和不修改原始型別的基礎上,直接向現有型別 新增 方法。擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫。包含擴充套件方法的類必須定義為靜態 static 類,擴充套件方法也必須定義為靜態 static ...