......有可能吗?
例如,我可以添加这个简单的函数......
public static double Deg2Rad(double degrees) {
return Math.PI / 180 * degrees;
}
...到Convert
班级?
所以(使用默认的......“使用”)你可以调用
double radians = Convert.Deg2Rad(123);
可以这样做吗?如果是这样,怎么样?
答案 0 :(得分:1)
不,这是不可能的。如果Convert
不是static
,而是没有。
您可以使用double
关键字<{1}}向this
添加扩展程序:
public static double Deg2Rad(this double degrees) {
return Math.PI / 180 * degrees;
}
并像这样使用它:
double radians = (123D).Deg2Rad();
但是,您必须将方法放在static
类中才能使其正常工作。
答案 1 :(得分:1)
你可以得到你想要的东西。 C#有“扩展方法”。这允许您将方法添加到另一个类,即使该类位于您没有源代码的另一个程序集中。但是,您无法将静态函数添加到另一个类。您只能添加实例方法。
有关详细信息,请参阅MSDN Extensions Methods。
答案 2 :(得分:1)
不,你不能,但你可以向double
添加一个扩展方法,并将其称为
double x = 180.0;
double y = Math.Cos( x.Deg2Rad() );
double z = Math.Sin( 0.5.Pi() );
在静态类中添加以下扩展方法:
public static class ExtensionMethods
{
public static double Deg2Rad(this double angle)
{
return Math.PI*angle/180.0;
}
public static double Pi(this double x)
{
return Math.PI*x;
}
}
答案 3 :(得分:1)
不,你不能,但你真的不需要 - 你只能声明自己的静态类,例如:
public static class MyConvert
{
public static double Deg2Rad(double degrees)
{
return Math.PI / 180 * degrees;
}
}
用法:
double radians = MyConvert.Deg2Rad(123);
(显然MyConvert
是一个垃圾名称,但你明白了。)
上面和系统Convert
类上的方法之间的唯一区别是,如果它在Convert
类上它看起来像一个内置函数,但你会挣扎到说服我这实际上是一件好事(我想知道我什么时候调用框架代码而不是内部维护的代码)。
答案 4 :(得分:-1)
除了这里所说的,还有另一个选项Partial classes(这不适用于转换)。
如果该类声明为partial,则可以通过另一个partial类添加menthods,即使它位于另一个程序集(DLL)中。
但是,同样,该类必须最初被声明为部分才能工作。