2012-03-02 6 views
1

に私は「これは」のためにここに立ってどのような機能この修飾子は、関数の引数のC#

public static string TestFunc(this DateTime dt) 
{ 

} 

を以下のがありますか?

+0

が重複する可能性を(http://stackoverflow.com/questions/ 4700016/this-parameter-modifier-in-c) –

+0

もしあなたがそれを訂正しようとするならば、少なくとも文法も訂正すべきです...これは "何が"この文脈の中にあるのでしょうか? 「これは何を」ここに立っているのか? –

答えて

3

それは、このメソッド拡張メソッドになります。それは構造体を拡張するDateTimeです。

あなたが拡張メソッドは、この

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

のように宣言された場合、コンパイラは

string s = TestFunc(dt); 

に内部的に最後の行を書き換え、この

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

のようにそれを呼び出すことができますあなたはそれを呼び出すことができますこの

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

のような拡張メソッドは静的クラスで宣言する必要があります。宣言するクラスの名前空間が利用可能な場合(同じ名前空間にあるか、またはusingで名前空間をインポートしたため)、他のクラスでも使用できます。 System.Linqをインポートすると、IEnumerable<T>を実装するあらゆる種類のコレクションを拡張する多くの拡張メソッド(インテリセンス)が表示されます。メンバーリストの拡張メソッドの青い矢印が表示されます。

3

この文脈では、extension methodを定義するために使用されます。

2

拡張メソッドを定義するための構文です。これは、通常の静的関数として呼び出すことができます。

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

または日時の「拡張子」のように:

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

あなたはDateTimeタイプのextension methodを見つけました。

だから今、既存のDateTimeコードを変更せずに、あなたは、次の操作を行うことができます:[?C#で、このパラメータ修飾子]の

DateTime MyDT = DateTime.Now; 
string MyStr = MyDT.TestFunc(); 
// continue using MyStr as you wish... 
関連する問題