これらは、メソッドが拡張メソッドになるための 4 つの要件です。
- 静的クラスで宣言する必要があります
- 静的でなければなりません (最初の条件が満たされた場合、これは実際には常に true です)。
- 公開する必要があります
this
キーワードでマークされた最初のパラメーターが必要です
したがって、非静的クラスで拡張メソッドを定義することはできません。
拡張メソッド全体の機能は、ある種のシンタックス シュガーです。で宣言されている次の拡張メソッドMyClass
:
// The following extension methods can be accessed by instances of any
// class that is or inherits MyClass.
public static class Extension
{
public static void MethodA(this MyClass myInterface, int i)
{
Console.WriteLine
("Extension.MethodA(this IMyInterface myInterface, int i)");
}
}
次の 2 つの方法で呼び出すことができます。
var myClassObject = new MyClass();
Extension.MethodA(myClassObject);
または
myClassObject.MethodA();
ただし、いずれにせよ、2 番目のものはコンパイラによって最初のものに変換されます。