表示字符文字时使用\ u和\ x有什么区别

我已经看到\u\x在某些地方互换使用,同时代表一个字符文字。

例如'\u00A9' == '\x00A9'计算结果为true

我们不应该只使用\u来表示unicode字符吗? 有两种表示角色的方法有什么用?

强烈建议只使用\u ,因为它更不容易出错。

\x消耗1-4个字符,只要它们是hex数字 – 而\u必须始终跟随4个hex数字。 从C#5规范,第2.4.4.4节, \x的语法:

hex转义序列:
\x hex数 hex数 选择 hex数 选择 hex数选项

例如:

 string good = "Tab\x9Good compiler"; string bad = "Tab\x9Bad compiler"; 

…看起来相似,但是字符串非常不同,因为后者实际上是“Tab”,后面是U+9BAD后跟“编译器”。

我个人希望C#语言从未包含\x ,但我们去了。

请注意,还有\U ,后面跟着8个hex数字,主要用于非BMP字符。

\u\x之间还有另一个很大的区别:后者用于字符和字符串文字,而\u也可用于标识符:

 string x = "just a normal string"; Console.WriteLine(\u0078); // Still refers to the identifier x