私はこのようなものを見ました:
public static void FunctionSample(**this** Class1 x, int r, double f){
「これ」は何をしますか?
私はこのようなものを見ました:
public static void FunctionSample(**this** Class1 x, int r, double f){
「これ」は何をしますか?
これは への拡張メソッドを意味しますが、現在の形式では、メソッドも静的であり、静的クラス内にある必要があるClass1
ため、正しくありません。
拡張メソッドは静的メソッドとして定義されていますが、インスタンス メソッド構文を使用して呼び出されます。最初のパラメーターは、メソッドが操作する型を指定し、パラメーターの前に this修飾子が付きます。
これは、作成しているメソッドが拡張メソッドであることを意味します。これは、(あなたの場合) メソッドが のメンバー メソッドであるかのように動作することを意味しますClass1
。したがって、これを使用できます:
Class1 exmpl = new Class1();
exmpl.FunctionSample(0, 0.0);
ただし、拡張メソッドは静的である必要があり、静的クラスに存在する必要があるため、この場合は機能しません。
拡張メソッドを上記の例のように機能させたい場合は、拡張メソッドをusing
含む静的クラスが存在する名前空間へのディレクティブが必要になります。
実際、これはlinqも同様に機能する方法です。コード ファイルにを追加using System.Linq
する場合、行うことは、大量の拡張メソッドをインポートすることだけです。