接收到“正在分配的表达式”必须是“常量”

时间:2011-09-08 12:58:20

标签: c# .net const

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

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

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

private const int MaxTextLength = 18;

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

5 个答案:

答案 0 :(得分:24)

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

答案 1 :(得分:15)

使用static readonly代替const

常量必须是编译时间常量

答案 2 :(得分:11)

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

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

答案 3 :(得分:1)

值是否需要为const?静态只读适用于您的情况吗?

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

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

答案 4 :(得分:0)

不确定你为什么要这样做,但是......

private const string MaxText = "Text i want to use.";

private static int MaxTextLength { get { return MaxText.Length; } }