this關鍵字不能在靜態方法的方法體(即大括號之間的部分)中使用、但是可以在引數中使用(即c#的擴充套件方法)。
為什麼不能在方法體中使用?
答:this指的是類例項化的當前物件,靜態方法是通過類呼叫的,不需要例項化;
既然不需要例項化,就沒有當前物件;既然沒有當前物件,所以不能使用this 關鍵字。
下面介紹c#的擴充套件方法:
定義和呼叫擴充套件方法
1、定義乙個靜態類以包含擴充套件方法。該類必須對客戶端**可見。
2、將該擴充套件方法實現為靜態方法,並使其至少具有與包含類相同的可見性。
3、該方法的第乙個引數指定方法所操作的型別;該引數必須以 this 修飾符開頭。
4、在呼叫**中,新增一條 using 指令以指定包含擴充套件方法類的命名空間。
5、按照與呼叫型別上的例項方法一樣的方式呼叫擴充套件方法。
public如上述**所示:static
class
myextensions
,stringsplitoptions.removeemptyentries).length;}}
1、定義靜態類:public static class myextensions
2、定義靜態方法:在 public static int wordcount(this string str) ,第乙個引數是擴充套件的類。以後的引數就是該擴充套件方法的引數,例:public static int wordcount(this string str,int tempint) 。
3、靜態方法中:wordcount就是擴充套件的方法名。引數中有乙個this關鍵字。關鍵字後面的引數 string 就是要擴充套件的類。
4、因為string類所在的命名空間是system ,所以新增 using system;
5.使用的時候,要引用string 類所在的命名空間,也要引用string 擴充套件方法所在類的命名空間。
如上圖所示:這樣的話,使用string類的時候,就會有 wordcount() 方法。
注意:該方法的前面會有(extebsion),表示該方法是擴充套件方法。
C this關鍵字在靜態方法中的使用。
this關鍵字不能在靜態方法的方法體 即大括號之間的部分 中使用 但是可以在引數中使用 即c 的擴充套件方法 為什麼不能在方法體中使用?答 this指的是類例項化的當前物件,靜態方法是通過類呼叫的,不需要例項化 既然不需要例項化,就沒有當前物件 既然沒有當前物件,所以不能使用this 關鍵字。下面介...
C this關鍵字用法
這個關鍵字引用類的當前例項,並且也用作擴充套件方法第乙個引數的修飾符 public employee string name,string alias calctax this public intthis int param set 靜態成員函式存在於類級別,並且不作為物件的一部分,所以沒有thi...
C this關鍵字詳解
紙上得來終覺淺,絕知此事要躬行!1 這裡解決了當傳入引數的名稱和類字段同名時造成的歧義,可以使用this關鍵字來自制定指定當前類欄位名稱賦值,否則會出現下圖提示,而且當你呼叫下圖建構函式,會發現輸出name的值為空。2 在類的定義內的方法,呼叫當前類例項成員,可以使用this關鍵字代替當前的例項物件...