擴充套件方法
擴充套件方法使您能夠向現有型別「新增」方法,而無需建立新的派生型別、重新編譯或以其他方式修改原始型別。擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫。對於用 c# 和 visual basic 編寫的客戶端**,呼叫擴充套件方法與呼叫在型別中實際定義的方法之間沒有明顯的差異。
如果我們有這麼乙個需求,將乙個字串的第乙個字元轉化為大寫,第二個字元到第n個字元轉化為小寫,其他的不變,那麼我們該如何實現呢?
不使用擴充套件方法:
using system;
using sy程式設計客棧stem.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace extramethod
} class program}}
使用擴充套件方法:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace extramethod
} //擴充套件類,只要是靜態就可以
public static class extraclass}}
通過上面兩種方法的比較:
1.**在訪問topascal這樣的靜態方法時更為便捷。用起來就像是被擴充套件型別確實具有該例項方法一樣。
2.擴充套件方法不改變被擴充套件類的**,不用重新編譯、修改、派生被擴充套件類
定義擴充套件方法
1.定義乙個靜態類以包含擴充套件方法。
2.該hzsmb類必須對客戶端**可見。
3.將該擴充套件方法實現為靜態方法,並使其至少具有與包含類相同的可見性。
4.方法的第乙個引數指定方法所操作的型別;該引數必須以 this 修飾符開頭。
請注意,第乙個引數不是由呼叫**指定的,因為它表示正應用運算子的型別,並且編譯器已經知道物件的型別。 您只需通過 n 為這兩個形參提供實參。
注意事項:
1.擴充套件方法必須在靜態類中定義
2.擴充套件方法的優先順序低於同名的類方法
3.擴充套件方法只在特定的命名空間內有效
4.除非必要不要濫用擴充套件方法
C 擴充套件方法
c 語言從3.0開始增加了乙個很特別的功能 擴充套件方法。那麼擴充套件方法起什麼作用呢?很多時候我們想為已經存在的類擴充套件某些功能,而又沒有必要去繼承該類,甚至有時候這個類根本就不允許繼承,如string類,這時候就可以使用擴充套件方法來為其擴充套件功能。下面舉例說明 一 我們建立乙個類庫如下 c...
C 擴充套件方法
c 語言從3.0開始增加了乙個很特別的功能 擴充套件方法。那麼擴充套件方法起什麼作用呢?很多時候我們想為已經存在的類擴充套件某些功能,而又沒有必要去繼承該類,甚至有時候這個類根本就不允許繼承,如string類,這時候就可以使用擴充套件方法來為其擴充套件功能。下面舉例說明 一 我們建立乙個類庫如下 c...
C 擴充套件方法
使用 net 3.0之後,我一直都覺得有種方法很奇怪,這種方法在一般的方法前面多了乙個藍色的向下箭頭。這種方法其實是擴充套件方法,這種擴充套件方法不需要去修改原類。class program public static class extendfunction 例子中我定義了乙個擴充套件方法,這個方...