...出来ますか?
たとえば、この単純な関数を追加できますか...
public static double Deg2Rad(double degrees) {
return Math.PI / 180 * degrees;
}
...Convert
クラスに?したがって(デフォルトの...「usings」を使用して)呼び出すことができます
double radians = Convert.Deg2Rad(123);
これはできますか?もしそうなら、どのように?
...出来ますか?
たとえば、この単純な関数を追加できますか...
public static double Deg2Rad(double degrees) {
return Math.PI / 180 * degrees;
}
...Convert
クラスに?したがって(デフォルトの...「usings」を使用して)呼び出すことができます
double radians = Convert.Deg2Rad(123);
これはできますか?もしそうなら、どのように?
いいえ、できませんが、実際にそうする必要はありません。代わりに、独自の静的クラスを宣言することができます。次に例を示します。
public static class MyConvert
{
public static double Deg2Rad(double degrees)
{
return Math.PI / 180 * degrees;
}
}
使用法:
double radians = MyConvert.Deg2Rad(123);
(明らかMyConvert
にゴミの名前ですが、アイデアはわかります)。
Convert
上記とシステムクラスのメソッドの唯一の違いは、Convert
クラスの場合は組み込み関数のように見えますが、実際にはそれが良いことだと私に納得させるのに苦労することです (私はいつ知りたいですか?フレームワークコードと内部で維持されているコードを呼び出しています)。
いいえ、できません。Convert
そうでない場合は拡張機能を使用できますがstatic
、そうではありません。
double
ただし、this
キーワードを使用して拡張機能を追加できます。
public static double Deg2Rad(this double degrees) {
return Math.PI / 180 * degrees;
}
そして、次のように使用します。
double radians = (123D).Deg2Rad();
ただし、メソッドを機能させるには、メソッドをstatic
クラスに配置する必要があります。
欲しいものはある程度手に入れることができます。C# には「拡張メソッド」があります。これにより、そのクラスがソース コードを持たない別のアセンブリにある場合でも、別のクラスにメソッドを追加できます。ただし、静的関数を別のクラスに追加することはできません。インスタンス メソッドのみを追加できます。
詳細については、「MSDN 拡張メソッド」を参照してください。
ここで述べたこととは別に、部分クラスという別のオプションもあります(これはConvertには適用されません)。
クラスがパーシャルとして宣言されている場合は、別のアセンブリ(DLL)にある場合でも、別のパーシャルクラスを介してメントッドを追加できます。
ただし、この場合も、クラスを機能させるには、クラスを最初に部分的に宣言する必要があります。