代码之家  ›  专栏  ›  技术社区  ›  James Hughes

在方法中使用const

  •  5
  • James Hughes  · 技术社区  · 16 年前

    在以下方法中,

    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 回复  |  直到 16 年前
        1
  •  4
  •   Oded    16 年前

    是的,在这两种情况下,它都将被拘留。

    将其标记为 const 使你的意思更清楚- do not touch this string variable, do not assign a different value to it .

        2
  •  1
  •   Darin Dimitrov    16 年前

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

    • 使用常量:

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

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

    所以在第二种情况下,您将声明一个额外的局部变量,但是imho的差异将是微观的。

        3
  •  1
  •   Rune FS    16 年前

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

    推荐文章