2

私はこのようなものを見ました:

public static void FunctionSample(**this** Class1 x, int r, double f){

「これ」は何をしますか?

4

2 に答える 2

6

これは への拡張メソッドを意味しますが、現在の形式では、メソッドも静的であり、静的クラス内にある必要があるClass1ため、正しくありません。

拡張メソッド (C# プログラミング ガイド)

拡張メソッドは静的メソッドとして定義されていますが、インスタンス メソッド構文を使用して呼び出されます。最初のパラメーターは、メソッドが操作する型を指定し、パラメーターの前に this修飾子が付きます。

于 2013-02-22T09:28:51.227 に答える
0

これは、作成しているメソッドが拡張メソッドであることを意味します。これは、(あなたの場合) メソッドが のメンバー メソッドであるかのように動作することを意味しますClass1。したがって、これを使用できます:

Class1 exmpl = new Class1();
exmpl.FunctionSample(0, 0.0);

ただし、拡張メソッドは静的である必要があり、静的クラスに存在する必要があるため、この場合は機能しません。

拡張メソッドを上記の例のように機能させたい場合は、拡張メソッドをusing含む静的クラスが存在する名前空間へのディレクティブが必要になります。

実際、これはlinqも同様に機能する方法です。コード ファイルにを追加using System.Linqする場合、行うことは、大量の拡張メソッドをインポートすることだけです。

于 2013-02-22T09:31:07.583 に答える