首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么char‘\’和char‘’相同?

为什么char‘\’和char‘’相同?
EN

Stack Overflow用户
提问于 2014-02-26 11:07:20
回答 2查看 203关注 0票数 3

快速提问。为什么下面两行都是有效的?

代码语言:javascript
复制
char x = '\"';
char y = '"';

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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)和新行字符以外的任何字符

正如您所看到的,对于'来说,情况正好相反

代码语言:javascript
复制
string x = "'";
string y = "\'";
Console.WriteLine(x == y); // Strings are equivalent
票数 14
EN

Stack Overflow用户

发布于 2014-02-26 11:14:31

您只需要转义序列时,纯粹的价值将是矛盾的。转义序列是这样一种说法:编译器,为了语法的目的忽略它。把它当作纯粹的价值。

代码语言:javascript
复制
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.
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22039442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档