在.net 3.5版本開始,引入了擴充套件方法,可以為已經設計好的類,為其新增一些方法,比如string類是系統已經定義好的,如果需要給該類新增一些函式,我們可以定義乙個類stringext繼承string類,然後定義我們需要的函式,但如果是密封類的話,就不能通過繼承來擴充套件該類如果我們只需要為乙個類新增一兩個函式,擴充套件的方法不是很多,通過繼承的方法來擴充套件即增加了**,而且系統對繼承類所需的開銷也比較大
在.net3.5提供了擴充套件方法,我們可以很容易的對乙個類進行擴充套件,所花的開銷比繼承的方法小,效率更高
下面為string類新增乙個mymethod方法,該方法輸出字串
首先有幾個規則
1)擴充套件方法必須在乙個非巢狀,非泛型的靜態類中
定義該方法的類不能巢狀在其他類中,應直接在命名空間下定義
2)擴充套件方法至少有乙個引數
3)擴充套件方法的第乙個引數為擴充套件方法的類(我們對string類進行擴充套件,則第乙個引數型別為string),必須加上字首this
4)第乙個引數不能為指標型別,不能使用ref,out修飾符
classprogram
}//擴充套件方法類:必須為非巢狀,非泛型的靜態類
public
static
class
stringext
}
這樣,string就多了乙個mymethod方法了
C 擴充套件方法
c 語言從3.0開始增加了乙個很特別的功能 擴充套件方法。那麼擴充套件方法起什麼作用呢?很多時候我們想為已經存在的類擴充套件某些功能,而又沒有必要去繼承該類,甚至有時候這個類根本就不允許繼承,如string類,這時候就可以使用擴充套件方法來為其擴充套件功能。下面舉例說明 一 我們建立乙個類庫如下 c...
C 擴充套件方法
c 語言從3.0開始增加了乙個很特別的功能 擴充套件方法。那麼擴充套件方法起什麼作用呢?很多時候我們想為已經存在的類擴充套件某些功能,而又沒有必要去繼承該類,甚至有時候這個類根本就不允許繼承,如string類,這時候就可以使用擴充套件方法來為其擴充套件功能。下面舉例說明 一 我們建立乙個類庫如下 c...
C 擴充套件方法
使用 net 3.0之後,我一直都覺得有種方法很奇怪,這種方法在一般的方法前面多了乙個藍色的向下箭頭。這種方法其實是擴充套件方法,這種擴充套件方法不需要去修改原類。class program public static class extendfunction 例子中我定義了乙個擴充套件方法,這個方...