Microsoft documentation states此代码将返回7个字符
Length属性返回此实例中Char对象的数量, 不是Unicode字符的数量。
string characters = "abc\u0000def";
Console.WriteLine(characters.Length); // Displays 7
我需要一个函数来返回结果12因为有12个不同的字符。我可以使用哪种功能?
答案 0 :(得分:10)
您必须阻止编译器对文字的解释。这可以使用@前缀完成,如下所示:
var characters = @"abc\u0000def";
此字符串的Length
属性将返回12,但字符串中将不再存在实际的unicode字符。
答案 1 :(得分:4)
C#编译器将用空字节替换\u0000
。这意味着,在执行时,您的内存中只有7个字符。
如果您不希望编译器替换特殊字符,则必须首先转义反斜杠:
string characters = "abc\\u0000def";
Console.WriteLine(characters.Length); // Displays 12