Microsoft文档中的C#String.Length

Microsoft文档声明此代码将返回7个字符

Length属性返回此实例中Char对象的数量,而不是Unicode字符数。

string characters = "abc\u0000def"; Console.WriteLine(characters.Length); // Displays 7 

我将需要一个函数来返回结果12,因为有12个不同的字符。 我可以使用哪种function?

您必须阻止编译器对文字的解释。 这可以使用@前缀完成,如下所示:

 var characters = @"abc\u0000def"; 

然后,此字符串的Length属性将返回12,但字符串中将不再存在实际的unicode字符。

C#编译器将用空字节替换\u0000 。 这意味着,在执行时,您的内存中只有7个字符。

如果您不希望编译器替换特殊字符,则必须首先转义反斜杠:

 string characters = "abc\\u0000def"; Console.WriteLine(characters.Length); // Displays 12