0

...是否可以?

例如,我可以添加这个简单的功能......

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

……Convert上课?所以(使用默认的...“usings”)你可以调用

double radians = Convert.Deg2Rad(123);

这可以做到吗?如果是这样,怎么做?

4

5 回答 5

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

不,你不能,但你可以添加一个扩展方法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;
    }
}
于 2011-04-28T23:10:01.223 回答
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

除了这里所说的之外,还有另一个选项是部分类(这不适用于转换)。

如果该类被声明为分部,那么您可以通过另一个分部类添加方法,即使它位于另一个程序集 (DLL) 中。

但是,同样,必须首先声明该类才能使其工作。

于 2011-04-28T23:24:02.253 回答