2012-03-02 48 views
1

我有以下功能此修飾符在函數的參數C#

public static string TestFunc(this DateTime dt) 
{ 

} 

什麼「這個」站在這裏呢?

+0

可能重複(http://stackoverflow.com/questions/ [在C#這個參數修改?] 4700016/this-parameter-modifier-in-c) – 2012-03-02 19:51:47

+0

如果你要糾正它,你至少應該糾正語法,......它應該讀「這個」在這種情況下代表什麼「?反對這個「什麼」在這裏? – 2012-03-02 19:52:21

回答

3

它使得這種方法的擴展方法。它擴展了DateTime結構。

你可以這樣調用

DateTime dt = DateTime.Now; 
string s = dt.TestFunc(); 

編譯器內部重寫最後一行

string s = TestFunc(dt); 

如果擴展方法聲明如下

public static string TestFunc(this DateTime dt, string format) 
{  
} 

你可以稱它這樣

string s = dt.TestFunc("dd.MM.YY"); 

擴展方法必須在靜態類中聲明。如果聲明類的名稱空間可用(或者因爲它位於相同的名稱空間中或因爲您使用using導入了名稱空間),則可以將它們用於其他類中。如果您導入System.Linq,您將看到很多擴展方法(在intellisense中),擴展了各種實現IEnumerable<T>的集合。成員列表中的擴展方法顯示藍色箭頭。

2

這是用來定義擴展方法的語法。它可以被稱爲一個正常的靜態函數:

DateTime dt = DateTime.Today; 
string s = ClassName.TestFunc(dt); 

或日期時間的「延伸」:

DateTime dt = DateTime.Today; 
string s = dt.TestFunc(); 
0

你已經找到了DateTime類型的extension method

所以現在,沒有任何改變現有DateTime代碼,你可以做以下內容:

DateTime MyDT = DateTime.Now; 
string MyStr = MyDT.TestFunc(); 
// continue using MyStr as you wish...