【发布时间】:2011-09-08 12:58:20
【问题描述】:
有没有办法使用这样的东西:
private const int MaxTextLength = "Text i want to use".Length;
我认为它比使用类似的东西更具可读性并且更不容易出错:
private const int MaxTextLength = 18;
有没有办法让文本的长度成为常量变量的来源?
【问题讨论】:
-
“常量变量”?
有没有办法使用这样的东西:
private const int MaxTextLength = "Text i want to use".Length;
我认为它比使用类似的东西更具可读性并且更不容易出错:
private const int MaxTextLength = 18;
有没有办法让文本的长度成为常量变量的来源?
【问题讨论】:
private readonly static int MaxTextLength = "Text i want to use".Length;
【讨论】:
使用static readonly 而不是const。
常量必须是编译时常量
【讨论】:
不幸的是,如果您使用 const 关键字,则“=”右侧的值必须是编译时常量。使用“字符串”.length 需要执行 .NET 代码,这只能在应用程序运行时发生,而不是在编译时发生。
您可以考虑将字段设为只读而不是 const。
【讨论】:
该值是否需要为常量?静态只读是否适合您的情况?
private static readonly int MaxTextLength = "Text i want to use".Length;
这将允许您以与第一个示例类似的方式编写代码。
【讨论】:
不知道你为什么要这样做,但是怎么样......
private const string MaxText = "Text i want to use.";
private static int MaxTextLength { get { return MaxText.Length; } }
【讨论】: