先看下面的**:
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();
詳細擴充套件
namespacedemo
//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...