在局部变量C#上声明字符串的局部常量是否有任何好处?

时间:2017-09-11 20:14:11

标签: c# .net string performance clr

对于在字符串上使用常量的性能是否有任何显着的好处。假设以下情况

public void MethodUsingConstant()
{
  const string searchedText = "foo";

  //some operations using searchedText string
}

public void MethodNoUsingConstant()
{
  string searchedText = "foo";

  //some operations using searchedText string
}

还可以选择将其带到类结构常量字段。

或者,我应该避免过多地过度思考这些微观优化吗?

1 个答案:

答案 0 :(得分:1)

如果你仔细想想,它应该不会有太大的不同。这是因为当计算机看到变量时,它会检索其内存地址,然后检索该值。我已经尝试过这个代码,差异非常小(小于3毫秒:BTW代码在~107毫秒内运行)可能会下降到数百万个其他变量:

        //Just changed to non const
        const string s = "hello";

        string full = "";

        int k = 0;

        for(int i = 0; i < 10000; i++)
        {
            full += s;
        }

一般来说,const vs non const只是归结为:这个值总是保持不变:将它设置为const,否则就离开它。这是一个很棒的link about .NET optimization

总而言之,您应该只在代码无法以其他任何方式进行优化的情况下了解这些微小的细节,在这种情况下,您的代码就可以了。

相关问题