这是我长期以来质疑的事情,但从来没有费心去弄清楚。当我下载第三方库时,我经常在字符串之前使用@
符号看到字符串赋值。
string myString = @"Some text";
但是,如果我只是做
,似乎完全没有区别string myString = "Some text";
那么@
在做什么?
答案 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)
在这种情况下没有区别。 所有'@'都允许你省略转义反斜杠。如果您使用'@'并希望在字符串中包含双引号,则需要将双引号加倍。