我有一个变量theetaCurrent
,它由另一个应用程序以10度的程度发送给我。我可以通过使用函数轻松地将它转换到任何地方,但我想做theetaCurrent.ToRadians()
之类的事情。首先,有可能吗?如果有,那怎么样?
以下是我目前的方法
double inRadians (double angleIn10thofaDegree)
{
// Angle in 10th of a degree
return (angleIn10thofaDegree*Math.PI)/1800;
}
感谢您的帮助。
答案 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。