我在某些地方看到\u并\x互换使用,同时代表一个字符文字.
例如,'\u00A9' == '\x00A9'评估为true
我们不应该仅\u用于表示unicode字符吗?有两种表示角色的方法有什么用?
Jon*_*eet 30
我强烈建议只使用\u,因为它更不容易出错.
\x消耗1-4个字符,只要它们是十六进制数字 - 但\u必须始终跟随4个十六进制数字.从C#5规范,第2.4.4.4节,语法\x:
十六进制转义序列:
\x十六位 进制数字的选择 十六进制数字的选择 十六进制数字的选择
例如:
string good = "Tab\x9Good compiler";
string bad = "Tab\x9Bad compiler";
Run Code Online (Sandbox Code Playgroud)
...看起来很相似,但字符串非常不同,因为后者实际上是"Tab",U+9BAD后跟"编译器".
我个人希望C#语言从未包含在内\x,但我们去了.
请注意,还有\U,后面总是有8个十六进制数字,主要用于非BMP字符.
\u和之间还有另一个很大的区别\x:后者仅用于字符和字符串文字,而\u也可用于标识符:
string x = "just a normal string";
Console.WriteLine(\u0078); // Still refers to the identifier x
Run Code Online (Sandbox Code Playgroud)