使用本地const

时间:2011-05-09 08:37:51

标签: c# c#-4.0

我安装了resharper,它向我建议我应该将一些局部变量修改为const。我从来没有听说过这个,所以我开始谷歌搜索。 MSDN肯定有一些具有本地功能的代码,但没有解释原因。在stackoverflow上,我遇到了一些问题,但更多的是关于是否有一个本地const比没有它们更快。

所以,我在这里摸不着头脑。为什么有一个本地const?它与语义有关吗?有一些好处吗?也许两者都是?

2 个答案:

答案 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