我安装了resharper,它向我建议我应该将一些局部变量修改为const。我从来没有听说过这个,所以我开始谷歌搜索。 MSDN肯定有一些具有本地功能的代码,但没有解释原因。在stackoverflow上,我遇到了一些问题,但更多的是关于是否有一个本地const比没有它们更快。
所以,我在这里摸不着头脑。为什么有一个本地const?它与语义有关吗?有一些好处吗?也许两者都是?
答案 0 :(得分:2)
Const有一个主要的好处:它的值是不可更改的,这可以强制执行代码的稳定性和稳定性。
假设您要在某些方法执行期间定义一些日期格式,它仅对此有效。你为什么不使用常数?
public void SomeMethod()
{
const string dateFormat = "MM/dd/yyyy";
... // Lot of operations
return Date.Now.ToString(dateFormat);
}
如果您可以使用常量,则可以避免人为错误。
答案 1 :(得分:1)
拥有一个本地const只是一个范围问题。而不是const可用于该类的整个类或消费者(如果const是公共的),它只能在您声明它的方法中使用。
为了说明为什么ReSharper建议重构,我将生成的IL包含在一个简单的例子中。
没有const:
string s = "foo";
Console.WriteLine(s);
生成IL:
ldstr "foo"
stloc.0
ldloc.0
call System.Console.WriteLine
使用const:
const string s = "foo";
Console.WriteLine(s);
生成IL:
ldstr "foo"
call System.Console.WriteLine