this關鍵字不能在靜態方法的方法體(即大括號之間的部分)中使用、但是可以在參數中使用(即C#的擴展方法)。
為什么不能在方法體中使用?
答:this指的是類實例化的當前對象,靜態方法是通過類調用的,不需要實例化;
既然不需要實例化,就沒有當前對象;既然沒有當前對象,所以不能使用this 關鍵字。
下面介紹C#的擴展方法:
定義和調用擴展方法
1、定義一個靜態類以包含擴展方法。該類必須對客戶端代碼可見。
2、將該擴展方法實現為靜態方法,並使其至少具有與包含類相同的可見性。
3、該方法的第一個參數指定方法所操作的類型;該參數必須以 this 修飾符開頭。
4、在調用代碼中,添加一條 using 指令以指定包含擴展方法類的命名空間。
5、按照與調用類型上的實例方法一樣的方式調用擴展方法。
public static class MyExtensions { public static int WordCount(this String str) { return str.Split(new char[] { ' ', '.', '?' }, 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),表示該方法是擴展方法。
