web-dev-qa-db-ja.com

静的拡張メソッド

可能性のある複製:
既存の静的クラスに拡張メソッドを追加できますか?

静的拡張メソッドをクラスに追加する方法はありますか。

具体的には、Boolean.Parseをオーバーロードしてint引数を許可します。

154
Midhat

要するに、いいえ、できません。

長い答え、拡張メソッドは単なる構文上の砂糖です。 IE:

文字列に拡張メソッドがある場合は、次のようにします。

public static string SomeStringExtension(this string s)
{
   //whatever..
}

それを呼び出すとき:

myString.SomeStringExtension();

コンパイラはそれを次のように変換します。

ExtensionClass.SomeStringExtension(myString);

ご覧のとおり、静的メソッドに対してこれを行う方法はありません。

そして、もう1つ思い付いたのは、既存のクラスに静的メソッドを追加できるpointとはどういうことでしょうか?同じことを行う独自のヘルパークラスを持つことができるため、実際にできることの利点は次のとおりです。

Bool.Parse(..)

vs.

Helper.ParseBool(..);

本当にテーブルに多くをもたらしません...

144
BFree

具体的には、Boolean.Parseをオーバーロードしてint引数を許可します。

Intの拡張は機能しますか?

public static bool ToBoolean(this int source){
    //do it
    //return it
}

その後、次のように呼び出すことができます。

int x = 1;

bool y=x.ToBoolean();
75
bsneeze

できるようには見えません。 それについての議論はこちらをご覧ください

私は間違っていることを証明したいのですが。

3
Ray