一.概念
擴充套件方法使你能夠向現有型別「新增」方法,而無需建立新的派生型別、重新編譯或以其他方式修改原始型別。擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫。
要素(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 例子中我定義了乙個擴充套件方法,這個方...