为什么要用@分配字符串?

时间:2012-09-13 18:31:15

标签: c#

  

可能重复:
  What's the @ in front of a string in C#?

这是我长期以来质疑的事情,但从来没有费心去弄清楚。当我下载第三方库时,我经常在字符串之前使用@符号看到字符串赋值。

string myString = @"Some text";

但是,如果我只是做

,似乎完全没有区别
string myString = "Some text";

那么@在做什么?

4 个答案:

答案 0 :(得分:7)

它表示verbatim string literal并允许您必须转义某些字符:

string foo = @"c:\some\path\filename.exe";

VS

string foo = "c:\\some\\path\\filename.exe";

答案 1 :(得分:2)

string reason = @"this string literal mea\ns something different with an @ in front than without";

如果没有@,上面的字符串将在单词“means”中使用换行符而不是'n'。使用@,“means”这个词看起来就像你看到的那样。此功能对文件路径等内容特别有用:

string path = @"C:\Users\LookMa\NoDoubleSlashes.txt";

答案 2 :(得分:1)

这是一个逐字字符串文字。它允许您执行@"C:\"而不是"C:\\"之类的操作,并且在正则表达式和文件路径中特别有用,因为它们通常使用不应由编译器解析的反斜杠。有关详细信息,请参阅the documentation

答案 3 :(得分:0)

在这种情况下没有区别。 所有'@'都允许你省略转义反斜杠。如果您使用'@'并希望在字符串中包含双引号,则需要将双引号加倍。