为什么要在逐字字符串中添加一组引号来添加另外两组引号?
string s = @"""Hi"""; //Note: three quotes on either side
前面的代码生成以下字符串: “喜”
答案 0 :(得分:9)
@符号当然意味着它是一个未转义的字符串文字。但是,“未转义”并不完全适用,因为您仍然需要某种方式来表示未转义的字符串文字中的双引号。为此,您只需输入两个双引号即可。您的字符串也可以这样写:
string s = "\"H\"";
答案 1 :(得分:3)
好想象一下人物流。
突然发现了一条引文。这是字符串文字的开头。 我们继续阅读,直到找到另一个引用。 现在有两件事可以发生。我们要么找到第二个引用,这意味着我们记下一个引用并继续阅读。或者我们找到另一个字符,这意味着字符串已经结束,
这可以在一个简单的状态图中显示:
+--------+ --- " ---> +-------+
--- " ---> | String | | Quote | --- any ---> end of string
+--------+ <--- " --- +-------+
| ^
| |
\- any -/
答案 2 :(得分:3)
如果你想在字符串中使用引号,你必须以某种方式转义它 - 否则它会终止字符串。
MS决定使用2个引号字符序列在逐字字符串中转义引号字符。就这么简单。
答案 3 :(得分:0)
因为引用逃脱了。