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

Abh*_*mar 2 .net c# extension-methods

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

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

谢谢你的帮助.

Wil*_*sem 7

是的,您可以定义扩展方法:

public static class Foo {

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

}
Run Code Online (Sandbox Code Playgroud)

粗体字表示您必须进行的更改:

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

如果你想要调用它,你只需要更改名称.theetaCurrent.ToRadians()

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

您可以通过以下方式调用它:

double result = original.ToRadians();
Run Code Online (Sandbox Code Playgroud)

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

double theetaCurrent = 180/Math.PI;
theetaCurrent.ToRadians();
//now theetaCurrent is 0.1
Run Code Online (Sandbox Code Playgroud)

这将是一个带引号调用的扩展方法- 据我所知 - 不受支持.请在此处查看Jon Skeet的StackOverflow答案.

  • 到目前为止,这是我得到的最佳答案!!!感谢您传授知识! (2认同)