在方法中使用const

时间:2010-03-13 15:53:39

标签: c# .net

在以下方法中,

public void InspectList(IList<int> values)
{
    if(values != null)
    {
        const string format = "Element At {0}";
        foreach(int i in values)
        {
            Log(string.Format(format, i));
        }
    }   
}

使用const是否比仅将字符串声明为字符串提供了任何好处?不管怎样,它不会被拘禁?

3 个答案:

答案 0 :(得分:4)

是的,在这两种情况下都会被实习。

将其标记为const会使您的意思更加清晰 - do not touch this string variable, do not assign a different value to it

答案 1 :(得分:1)

以下是两种情况下最终代码的外观:

  • 使用const:

    public void InspectList(IList<int> values)
    {
        if(values != null)
        {
            foreach(int i in values)
            {
                Log(string.Format("Element At {0}", i));
            }
        }   
    }
    
  • 没有const:

    public void InspectList(IList<int> values)
    {
        if(values != null)
        {
            string format = "Element At {0}";
            foreach(int i in values)
            {
                Log(string.Format(format, i));
            }
        }   
    }
    

因此,在第二种情况下,您将声明一个额外的局部变量,但恕我直言,差异将是微观的。

答案 2 :(得分:1)

有多种原因可以将常量作为常量声明。首先,它告诉任何一个读取代码的值将保持不变,udentifier只是值的别名。其次,优化器可以更容易地确定标识符的值是否可以在两次读取之间发生变化。声明它的成本很容易,因为它无法改变。对我来说,前一个原因更为重要。编写清楚显示意图的代码对我来说是开发人员可能拥有的最重要的习惯之一。