关于C#:为什么用@指定字符串?


Why assign a string with @?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What's the @ in front of a string in C#?

这是我问了很长一段时间,但从来没有费心弄明白的事情。当我下载第三方库时,我经常看到在字符串前使用@符号的字符串分配。

1
string myString = @"Some text";

但如果我只是这么做的话,似乎没有什么不同

1
string myString ="Some text";

那么,@在做什么?


它表示逐字字符串文字,允许您不必转义某些字符:

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

VS:

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

1
2
string reason = @"this string literal mea
s something different with an @ in front than without"
;

如果没有@,上面的字符串将有一个新行字符,而不是单词"means"中的"n"。对于@,单词"means"看起来就像你看到的一样。此功能尤其适用于文件路径等情况:

1
2
string path = @"C:\Users\LookMa
oDoubleSlashes.txt"
;


它是一个逐字字符串文本。它允许您执行类似于@"C:\"而不是"C:\\"的操作,并且在regex和文件路径中特别有用,因为这些路径通常使用编译器不应该解析的反斜杠。有关详细信息,请参阅文档。


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