private const string requireNonPrintableChar = new string('\x0005', 1);
我不希望这个值发生变化。曾经有人告诉我,使用const作为你不希望改变的值的好习惯。
然而msbuild说: “错误1指定给requireNonPrintableChar的表达式必须是常量”
我假设char不算作const而是为什么?
msdn说它可以是一个字符串,我相信它。
答案 0 :(得分:4)
简单地说:
private const string requireNonPrintableChar = "\x0005";
new string('\x0005', 1)
是一个表达式 被评估为字符串,但它不是编译时常量,const
字段只能赋值在编译时进行评估。
答案 1 :(得分:4)
必须直接定义常量。你不能使用函数来获得你的const值。
而不是这样做
const string MY_CONST = test();
static string GetValue()
{
return "Hello";
}
你应该这样做
const string MY_CONST = "Hello";
如果你想使用方法初始化,你可以像这样使用静态只读
private static readonly string requireNonPrintableChar = new string('\x0005', 1);
答案 2 :(得分:0)
你可以做什么w0lf说:
private const string requireNonPrintableChar = "\x0005";
但如果你想要第二个参数,请使用:
private static readonly string requireNonPrintableChar = new string('\x0005', 1); // should be greater than 1