C 中擴充套件方法應用

2022-01-12 09:02:52 字數 1771 閱讀 9378

擴充套件方法是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 擴充套件有兩個泛型引數 :

public

static

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...