什么是逐字字符串?

11

通过 ReSharper,我知道

var v = @"something";

使v成为一个叫做原始字符串的东西。这是什么,以及使用它的常见情况是什么?


3
http://msdn.microsoft.com/en-us/library/vstudio/ms228362.aspx - SLaks
2
路径几乎是我唯一使用逐字字符串的时候。Resharper建议将所有字符串文字转换为逐字字符串,这对我来说似乎有些愚蠢。 - Cody Gray
1
据我所知,ReSharper只是将其作为一种工具提供(它不会建议使用),而且仅当字符串包含反斜杠时才会提供该功能,这对我来说更有意义。 - pascalhein
2个回答

18

在verbatim字符串中,转义序列(例如"\n"代表换行)将被忽略。这有助于您输入包含反斜杠的字符串。

该字符串还允许跨多行延伸,例如:

var s = @"
line1
line2";

该字符串将以与源代码中输入的方式相同的方式显示,包括换行符,因此您不必担心缩进、换行等。

要在verbatim文本中使用引号,只需双倍引用它们:

@"This is a string with ""quotes""."

感谢您提供额外的解释。 - Marc

13
这意味着特殊字符无需转义,因为你已经告诉编译器要求特殊字符,并且忽略它们。一个常见的用例可能是指定连接字符串:
string sqlServer = @"SERVER01\SQL"; 

这是完全有效的,与正常使用不同,在正常使用中反斜杠将被视为转义字符。


1
为了清晰起见(因为我刚刚回答了一个引用此内容的问题),尽管这个答案说“特殊字符不需要转义”,但如果您的字符串包含双引号字符,仍然需要通过连续输入两个双引号来进行转义。 - Richardissimo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接