擴充套件方法是c# 3.0 中新增特性,可在不修改源類**情況,通過add file 模式對源**功能擴充套件。
擴充套件方法要求如下:
a.擴充套件方法需包含在 static 修飾類中.
b.擴充套件實現需是靜態形式。
c.擴充套件方法第乙個引數 字首為 this , 表示需要擴充套件類物件,從第二個引數開始,為擴充套件方法引數列表。
1.基礎型別擴充套件示例
如下擴充套件對字元型別增加換行符:
如下擴充套件方法將字典型別value 值拼接返回:
2.泛型擴充套件方法
泛型擴充套件,對任意物件增加 exttostring 方法.
下面是比較複雜泛型擴充套件方法推斷,注意,擴充套件方法之後的泛型引數不能做為擴充套件方法簽名中一部份:
testmethod.step(pppp) 實際呼叫: public static output step(this input input, ipipelinestepstep)
testmethod.step(ppppobject); 實際呼叫:public static object step(this input input, ipipelinestepstep)
如下調整,也能編譯通過,表明泛型擴充套件方法簽名與泛型引數個數沒有關係 , testmethod 只有乙個泛型引數,而 step 擴充套件有兩個泛型引數 :
publicstatic
class
pipelinestepextensions
//public static object step(this input input, ipipelinestepstep)
//}
testguandao testmethod = new testguandao();ipipelinestepdic
int> , string> pppp = new ipipelinestepdicint>, string>();
testmethod.step(pppp);
C 的擴充套件方法應用
1.問題提出 有時候,我希望能夠呼叫乙個方法判斷乙個string型別是否是合法的郵箱位址字串。一般的可以採取以下方法 定義乙個專門的靜態工具類,名為stringformatchecker,並在其中定義乙個方法,名為checkmailaddrformat,用於測試該字串是否是合法的郵箱位址格式。pub...
C 中擴充套件方法
什麼是擴充套件方法?擴充套件方法顧名思義,就是允許向現有的 型別 新增方法,而無需建立派生類 重新編譯或以其他方式修改原來型別。擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫。擴充套件方法和例項方法有何區別?通常只有在不得已 例如 不能修改原來的型別 的情況下才實現擴...
c 高階應用 理解擴充套件方法
1 它必須在乙個非巢狀的,非泛型的靜態類中 2 它至少有乙個引數 3 第乙個引數必須加上this關鍵字作為字首 4 第乙個引數不能有任何其他的修飾符 比如out或ref 5 第乙個引數的型別不能是指標型別 for example public class person 擴充套件方法的建立 publi...