我在C#中有一个看起来像这样的方法:
static Double Stirling(long n)
{
return Math.Sqrt((2 * n + 1.0 / 3.0) * Math.PI) * Math.Pow(n, n) / Math.Exp(n);
}
我的问题是......可以使用类似的东西:
static Double Stirling(long n) => return Math.Sqrt((2 * n + 1.0 / 3.0) * Math.PI) * Math.Pow(n, n) / Math.Exp(n);
我想要更美丽,更简洁的东西,这就是我要问的原因
答案 0 :(得分:3)
您可以使用表达式身体方法。
static double Stirling(long n) => Math.Sqrt((2 * n + 1.0 / 3.0) * Math.PI) * Math.Pow(n, n) / Math.Exp(n);
这只有在方法执行单个语句时才有可能,在这种情况下,我们会删除return
语句。
或者您可以使用Func
委托来表示行为:
Func<long, double> func = (long n) => Math.Sqrt((2 * n + 1.0 / 3.0) * Math.PI) * Math.Pow(n, n) / Math.Exp(n);
然后像这样调用它:
double result = func(2);
重要的是要注意=>
运算符用于expression bodied methods(上面的第一个示例)和lambdas(上面的第二个示例),但它们是完全不同的野兽。
答案 1 :(得分:1)
您可以使用此功能(只需删除返回)
static Double Stirling(long n) => Math.Sqrt((2 * n + 1.0 / 3.0) * Math.PI) * Math.Pow(n, n) / Math.Exp(n);
但这是来自C#6的表达体方法
请参阅this