表示字符文字时使用\ 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