【问题标题】:Receiving 'Expression being assigned must be constant' when it is接收“正在分配的表达式必须是常量”时
【发布时间】:2011-09-08 12:58:20
【问题描述】:

有没有办法使用这样的东西:

private const int MaxTextLength = "Text i want to use".Length;

我认为它比使用类似的东西更具可读性并且更不容易出错:

private const int MaxTextLength = 18;

有没有办法让文本的长度成为常量变量的来源?

【问题讨论】:

  • “常量变量”?

标签: c# .net constants


【解决方案1】:
private readonly static int MaxTextLength = "Text i want to use".Length;

【讨论】:

    【解决方案2】:

    使用static readonly 而不是const

    常量必须是编译时常量

    【讨论】:

      【解决方案3】:

      不幸的是,如果您使用 const 关键字,则“=”右侧的值必须是编译时常量。使用“字符串”.length 需要执行 .NET 代码,这只能在应用程序运行时发生,而不是在编译时发生。

      您可以考虑将字段设为只读而不是 const。

      【讨论】:

      • 可能是最有用的解释,因为它揭示了为什么当 const 时这不起作用。
      【解决方案4】:

      该值是否需要为常量?静态只读是否适合您的情况?

      private static readonly int MaxTextLength = "Text i want to use".Length;
      

      这将允许您以与第一个示例类似的方式编写代码。

      【讨论】:

        【解决方案5】:

        不知道你为什么要这样做,但是怎么样......

        private const string MaxText = "Text i want to use.";
        
        private static int MaxTextLength { get { return MaxText.Length; } }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多