为什么我不能将不可打印的字符定义为常量 c#

Age*_*eis 3 c#

private const string requireNonPrintableChar = new string('\x0005', 1);
Run Code Online (Sandbox Code Playgroud)

我不希望这个值会改变。曾几何时有人告诉我,将 const 用于您不希望更改的值是一种很好的做法。

但是 msbuild 说:“错误 1 ​​分配给 requireNonPrintableChar 的表达式必须是常量”

我假设 char 不算作 const 但为什么呢?

msdn 说它可以是一个字符串,我相信它是。

Cri*_*scu 5

简单地做:

private const string requireNonPrintableChar = "\x0005";
Run Code Online (Sandbox Code Playgroud)

new string('\x0005', 1)是一个确实被评估为字符串的表达式,但它不是编译时常量,并且const字段只能被分配可以在编译时评估的值。