c 擴充套件方法

2021-09-19 08:49:04 字數 1261 閱讀 3085

一.概念

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

要素(1)此方法必須是乙個靜態方法

(2)此方法必須放在靜態類中

(3)此方法的第乙個引數必須以this開頭,並且指定此方法是擴充套件自哪個型別

擴充套件方法的特點:

(1)擴充套件方法擴充套件自哪個型別,就必須是此型別的變數來使用,其他型別無法使用;

(2)擴充套件方法中的this後面的引數不屬於方法的引數,this後面的是指明擴充套件方法擴充套件自何種型別;

(3)如果擴充套件方法和例項方法具有相同的簽名,則優先呼叫例項方法;

(4)擴充套件自父類上的方法,可以被子類的物件直接使用;

(5)擴充套件自介面上的方法,可以被實現類的物件直接使用;

(6)擴充套件方法最終還是被編譯器編譯成:靜態類.靜態方法();

二. 如何定義

1、建立乙個靜態類;

2、在其中建立乙個靜態方法;

3、為這個靜態方法新增至少乙個引數,並在第乙個引數前加上this關鍵字,這個關鍵字會告訴編譯器當前方法是乙個擴充套件方法。而這個方法將成為第乙個引數所屬型別的新成員。

例:建立乙個student類,它包含了兩個方法stuinfo,getstuinfo

namespace extension

public string getstuinfo(string stuname, string stunum)

\n" + "學號:", stuname, stunum);}}

}

再宣告乙個名為extensionstudentinfo的靜態類,注意必須為靜態,

這個類的作用就是包含一些我們想要擴充套件的方法,在此我們宣告兩個student型別的擴充套件方法,student型別為我們自定義的型別。 

namespace extension

public static string extensiongetstuinfo(this student student,string stuname,string stusum)}}

使用擴充套件方法

namespace extension}}

執行結果

總結:

C 擴充套件方法

c 語言從3.0開始增加了乙個很特別的功能 擴充套件方法。那麼擴充套件方法起什麼作用呢?很多時候我們想為已經存在的類擴充套件某些功能,而又沒有必要去繼承該類,甚至有時候這個類根本就不允許繼承,如string類,這時候就可以使用擴充套件方法來為其擴充套件功能。下面舉例說明 一 我們建立乙個類庫如下 c...

C 擴充套件方法

c 語言從3.0開始增加了乙個很特別的功能 擴充套件方法。那麼擴充套件方法起什麼作用呢?很多時候我們想為已經存在的類擴充套件某些功能,而又沒有必要去繼承該類,甚至有時候這個類根本就不允許繼承,如string類,這時候就可以使用擴充套件方法來為其擴充套件功能。下面舉例說明 一 我們建立乙個類庫如下 c...

C 擴充套件方法

使用 net 3.0之後,我一直都覺得有種方法很奇怪,這種方法在一般的方法前面多了乙個藍色的向下箭頭。這種方法其實是擴充套件方法,這種擴充套件方法不需要去修改原類。class program public static class extendfunction 例子中我定義了乙個擴充套件方法,這個方...