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)
谢谢你的帮助.
是的,您可以定义扩展方法:
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答案.