.net中Radian转换程度的扩展方法

时间:2016-06-16 11:42:48

标签: c# .net extension-methods

我有一个变量theetaCurrent,它由另一个应用程序以10度的程度发送给我。我可以通过使用函数轻松地将它转换到任何地方,但我想做theetaCurrent.ToRadians()之类的事情。首先,有可能吗?如果有,那怎么样? 以下是我目前的方法

double inRadians (double angleIn10thofaDegree)
{
    // Angle in 10th of a degree
    return (angleIn10thofaDegree*Math.PI)/1800; 
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:7)

是的,您可以定义extension methods

public static class Foo {

    public static double ToRadians (this double angleIn10thofaDegree) {
        // Angle in 10th of a degree
        return (angleIn10thofaDegree*Math.PI)/1800; 
    }

}

以粗体显示您必须进行的更改:

  • 制作方法static;
  • 将名称更改为ToRadians;
  • this添加到参数中;和
  • static类中定义方法。

如果您想使用theetaCurrent.ToRadians()进行调用,则只需更改名称。

要使用扩展方法,您必须使用定义了Foo 的命名空间。

您可以通过以下方式致电:

double result = original.ToRadians();

但是,如果您的目标是使用扩展方法执行就地转换,例如:

double theetaCurrent = 180/Math.PI;
theetaCurrent.ToRadians();
//now theetaCurrent is 0.1

这将是一个使用 call-by-reference 的扩展方法,据我所知 - 这是不受支持的。请参阅a StackOverflow answer of Jon Skeet here