0

...出来ますか?

たとえば、この単純な関数を追加できますか...

public static double Deg2Rad(double degrees) {
    return Math.PI / 180 * degrees;
}

...Convertクラスに?したがって(デフォルトの...「usings」を使用して)呼び出すことができます

double radians = Convert.Deg2Rad(123);

これはできますか?もしそうなら、どのように?

4

5 に答える 5

1

いいえ、できませんが、実際にそうする必要はありません。代わりに、独自の静的クラスを宣言することができます。次に例を示します。

public static class MyConvert
{
    public static double Deg2Rad(double degrees) 
    {
        return Math.PI / 180 * degrees;
    }
}

使用法:

double radians = MyConvert.Deg2Rad(123);

(明らかMyConvertにゴミの名前ですが、アイデアはわかります)。

Convert上記とシステムクラスのメソッドの唯一の違いは、Convertクラスの場合は組み込み関数のように見えますが、実際にはそれが良いことだと私に納得させるのに苦労することです (私はいつ知りたいですか?フレームワークコードと内部で維持されているコードを呼び出しています)。

于 2011-04-28T23:17:15.740 に答える
1

いいえ、できません。Convertそうでない場合は拡張機能を使用できますがstatic、そうではありません。

doubleただし、thisキーワードを使用して拡張機能を追加できます。

public static double Deg2Rad(this double degrees) {
    return Math.PI / 180 * degrees;
}

そして、次のように使用します。

double radians = (123D).Deg2Rad();

ただし、メソッドを機能させるには、メソッドをstaticクラスに配置する必要があります。

于 2011-04-28T23:08:22.647 に答える
1

欲しいものはある程度手に入れることができます。C# には「拡張メソッド」があります。これにより、そのクラスがソース コードを持たない別のアセンブリにある場合でも、別のクラスにメソッドを追加できます。ただし、静的関数を別のクラスに追加することはできません。インスタンス メソッドのみを追加できます。

詳細については、「MSDN 拡張メソッド」を参照してください。

于 2011-04-28T23:09:28.383 に答える
-1

ここで述べたこととは別に、部分クラスという別のオプションもあります(これはConvertには適用されません)。

クラスがパーシャルとして宣言されている場合は、別のアセンブリ(DLL)にある場合でも、別のパーシャルクラスを介してメントッドを追加できます。

ただし、この場合も、クラスを機能させるには、クラスを最初に部分的に宣言する必要があります。

于 2011-04-28T23:24:02.253 に答える