有关在逐字字符串中转义引号的语法的问题

时间:2009-01-27 21:28:36

标签: c#

为什么要在逐字字符串中添加一组引号来添加另外两组引号?

string s = @"""Hi"""; //Note: three quotes on either side

前面的代码生成以下字符串:     “喜”

4 个答案:

答案 0 :(得分:9)

@符号当然意味着它是一个未转义的字符串文字。但是,“未转义”并不完全适用,因为您仍然需要某种方式来表示未转义的字符串文字中的双引号。为此,您只需输入两个双引号即可。您的字符串也可以这样写:

string s = "\"H\"";

答案 1 :(得分:3)

好想象一下人物流。

突然发现了一条引文。这是字符串文字的开头。 我们继续阅读,直到找到另一个引用。 现在有两件事可以发生。我们要么找到第二个引用,这意味着我们记下一个引用并继续阅读。或者我们找到另一个字符,这意味着字符串已经结束,

这可以在一个简单的状态图中显示:

           +--------+ --- " ---> +-------+
--- " ---> | String |            | Quote | --- any ---> end of string
           +--------+ <--- " --- +-------+
           |        ^
           |        |
           \- any -/

答案 2 :(得分:3)

如果你想在字符串中使用引号,你必须以某种方式转义它 - 否则它会终止字符串。

MS决定使用2个引号字符序列在逐字字符串中转义引号字符。就这么简单。

答案 3 :(得分:0)

因为引用逃脱了。