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

本文关键字:字符 打印 定义 常量 不能 一个 为什么 | 更新日期: 2023-09-27 18:11:19

private const string requireNonPrintableChar = new string(''x0005', 1);

我不希望这个值改变。我曾经被告知,对于你不希望改变的值使用const是一个很好的实践。

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

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

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

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

简单地做:

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