常量在C/C++编程中经常被用作产生更清晰代码的一种方式。有时也可能存在优化方面的好处。但是,我想知道在C#中将值声明为readonly或const除了可以使代码更易读之外,还能获得什么好处。
假设我有以下C#代码:
public Double HalfPiSomething(Int32 input)
{
return input + (Math.PI / 2);
}
这是一个相当简单的例子,但每次调用该方法时,我们将Math.PI
除以2,加上输入,然后将其返回给调用语句。
让我们将该代码中的 Math.PI / 2
提取为一个变量,放在包含类的某个地方:
private Double _halfPi = Math.PI / 2;
public Double HalfPiSomething(Int32 input)
{
return input + _halfPi;
}
显然,将
Math.PI / 2
的运算结果放在自己的变量中是一个好的编码习惯,特别是如果该值在类中的多个地方使用... 当然这里并没有,但假装一下就好了。 最后,由于 _halfPi
从不改变,我们将其设为 const
。private const Double _halfPi = Math.PI / 2;
public Double HalfPiSomething(Int32 input)
{
return input + _halfPi;
}
我想知道除了作为C#优秀编码实践以及使代码更易理解和更难出错之外,做我上面做的事情还有什么好处-尤其是与性能相关的好处吗?该值在本地内存中停留更长时间吗?