[英]Why is char '\“' same as char '”'?
快速的问题。 为什么这两行都有效?
char x = '\"';
char y = '"';
如果“是一个特殊字符,第二行不应该被标记为不正确吗?
如果“是一个特殊字符,第二行不应该被标记为不正确吗?
不,因为语言规则不要求"
在字符文字中转义,只在字符串文字中转义。
然而, 允许它以任何一种方式进行转义是一致的。 这样就有一组转义序列适用于字符和字符串文字,尽管\\U........
对于任何代码点都不会失败,这些代码点不是由单个UTF-16代码单元表示的。
不同之处在于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
当纯值为ambigious时,您只需要转义序列。 转义序列是一种说法:编译器,为了语法udnerstanding的目的忽略那个。 把它当作纯粹的价值。
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.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.