为什么我不能将一个不可打印的字符定义为常量c# ?
本文关键字:字符 打印 定义 常量 不能 一个 为什么 | 更新日期: 2023-09-27 18:11:19
private const string requireNonPrintableChar = new string(''x0005', 1);
我不希望这个值改变。我曾经被告知,对于你不希望改变的值使用const是一个很好的实践。
但是msbuild说:"错误1分配给requireNonPrintableChar'的表达式必须是常量"
我假设char不算作const,但为什么?
msdn说它可以是一个字符串我相信它是
简单地做:
private const string requireNonPrintableChar = "'x0005";
new string(''x0005', 1)
是一个表达式,将求值为字符串,但它不是编译时常数,并且const
字段只能被赋值,这些值可以在编译时求值。
必须直接定义常量。不能使用函数来获取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);
源你可以照w0if说的做:
private const string requireNonPrintableChar = "'x0005";
但是如果你想要第二个参数为count,使用:
private static readonly string requireNonPrintableChar = new string(''x0005', 1); // should be greater than 1