C 方法中的this引數

2021-08-19 01:13:11 字數 1769 閱讀 2670

先看下面的**:

public

static

class stringextension

",s);}}

為什麼這裡會有乙個this關鍵字,做什麼用?

其實這就是擴充套件方法!這個擴充套件方法在靜態類中宣告,定義乙個靜態方法,其中第乙個引數定義可它的擴充套件型別。foo()方法擴充套件了string類,因為它的第乙個引數定義了string型別,為了區分擴充套件方法和一般的靜態方法,擴充套件方法還需要給第乙個引數使用this關鍵字。

現在就可以使用帶string型別的foo方法了:

string s="hello"; s.foo();

結果在控制台上顯示foo invoked for hello ,因為hello是傳送給foo方法的字串。

歸納:擴充套件方法可以寫入最初沒有提供該方法的類中。還可以把方法新增到實現某個介面的任何類中,這樣多個類可以使用相同的實現**。

特點:1、靜態類 2、靜態方法 3、第乙個引數前加this

例如:public static listtolist(this string json),就是為this對應的string型別擴充套件類tolist()方法,呼叫方式 strjson.tolist();

詳細擴充套件

namespace

demo

//object型別擴充套件tojson方法

public

static

string tojson(this

object

obj)

;return

jsonconvert.serializeobject(obj, timeconverter);

}public

static

string tojson(this

object obj, string

datetimeformats)

;return

jsonconvert.serializeobject(obj, timeconverter);

}public

static t toobject(this

string

json)

public

static listtolist(this

string

json)

public

static datatable totable(this

string

json)

public

static jobject tojobject(this

string

json)

") : jobject.parse(json.replace("

", ""

)); }

}class

program

,new user

};//list轉化json字串

string json =users.tojson();

//string轉化list

users = json.tolist();

//string轉化datatable

datatable dt =json.totable();

}catch

(exception ex)

finally}}

public

class

user

public

string code

public

string name }}

C 方法中的引數型別

using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace 0207 方法中的引數型別 static void mai...

C 方法中的引數型別

二 方法中的引數型別 1.值引數 值引數是指不帶修飾符只帶資料型別的形參。值引數在使用值向方法傳遞引數時,編譯程式會把實參的值做乙份拷貝,並且將此拷貝傳遞給該方法,被呼叫的方法不會修改記憶體中實參的值。呼叫該方法時,系統會為每乙個值型別的形參分配乙個新的記憶體空間,然後將對應的實參的表示式運算的值複...

C 中的類的方法引數

今天學習了c 中類的方法引數,主要內容是形參和實參的區別,ref引用型別,out的使用,params可變引數的使用 using system 方法引數 namespace lesson09 2 public void swap int a int b 使用ref關鍵字定義引用型別 public vo...