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

mic*_*ael 25 .net c# const

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

private const int MaxTextLength = "Text i want to use".Length;
Run Code Online (Sandbox Code Playgroud)

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

private const int MaxTextLength = 18;
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*ras 26

private readonly static int MaxTextLength = "Text i want to use".Length;
Run Code Online (Sandbox Code Playgroud)


Gis*_*shu 17

static readonly而不是const.

常量必须是编译时常量

  • 但静态只读变量在case语句中不起作用. (2认同)

Kev*_*ski 11

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

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

  • 可能是最有用的解释,因为它揭示了为什么这在 const 时不起作用。 (2认同)