C# this關鍵字在靜態方法中的使用。


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),表示該方法是擴展方法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM