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

Tar*_*rec 3 c# char special-characters

快速的问题.为什么这两行都有效?

char x = '\"';
char y = '"';
Run Code Online (Sandbox Code Playgroud)

如果"是一个特殊字符,第二行不应该被标记为不正确吗?

Jon*_*eet 14

如果"是一个特殊字符,第二行不应该被标记为不正确吗?

不,因为语言规则不需要"在字符文字中进行转义,只能在字符串文字中进行转义.

然而,允许它以任何一种方式进行转义是一致的.这样就有一组转义序列适用于字符和字符串文字,但是\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
Run Code Online (Sandbox Code Playgroud)