繁体   English   中英

为什么char'\\''与char'''相同?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM