快速提问。为什么下面两行都是有效的?
char x = '\"';
char y = '"';如果“是一个特殊的字符,第二行不应该被标记为不正确吗?”
发布于 2014-02-26 11:09:32
如果“是一个特殊的字符,第二行不应该被标记为不正确吗?”
不,因为语言的规则不要求"在字符文本中转义,而只在字符串文本中转义。
然而,允许它以任何一种方式逃脱都是一致的。这样就有一组转义序列,它同时适用于字符和字符串文本,但是对于任何不是由一个UTF-16代码单元表示的代码点,\U........都会失败。
区别在C#规范的2.4.4.5节(字符串文本)中,其中单个正则字符串-文字字符的产生是:
除“(U+0022)、\ (U+005C)和新行字符之外的任何字符
与第2.4.4.4节(字符文字)相比,单字符产生是:
除‘(U+0027)、\ (U+005C)和新行字符以外的任何字符
正如您所看到的,对于'来说,情况正好相反
string x = "'";
string y = "\'";
Console.WriteLine(x == y); // Strings are equivalent发布于 2014-02-26 11:14:31
您只需要转义序列时,纯粹的价值将是矛盾的。转义序列是这样一种说法:编译器,为了语法的目的忽略它。把它当作纯粹的价值。
String s = """; //It would be unclear for the Compiler where the String ends and what is part of it. Hence Escape Sequencs are needed
char c = '"'; //It is clear where the Char starts and ends (the single Quotes).
char c = '''; //again unclear what of those is the Char. Escape Sequence needed.https://stackoverflow.com/questions/22039442
复制相似问题