字符串之前的C#'@'

Dan*_*iel 79 .net c#

可能重复:
.NET前面的字符串前面的@是什么?

我在C#学习书中找到了这个

DirectoryInfo dir = new DirectoryInfo(key.Key.ToString() + @":\");
Run Code Online (Sandbox Code Playgroud)

然而,这本书没有解释'@'符号的用途.我尝试搜索MSDN C#操作符,但没有在那里列出.我可以猜测它允许开发人员不必转义'\'或者它是否允许没有任何转义序列?

这是什么,我为什么要使用@":\"而不是":\\"

谢谢您的帮助

编辑:有关类似问题,请参阅下面的评论

Mar*_*ius 143

这意味着按字面解释字符串(也就是说,如果使用@前缀,则无法转义字符串中的任何字符).它可以在可以使用的情况下增强可读性.

例如,如果您正在使用UNC路径,则:

@"\\servername\share\folder"
Run Code Online (Sandbox Code Playgroud)

比这更好:

"\\\\servername\\share\\folder"
Run Code Online (Sandbox Code Playgroud)

  • 好吧,你可以逃脱"通​​过加倍,即`字符串S = @""""; Console.Write("[{0}]",S);`写`[""]` (11认同)
  • @Daniel:对; 任何以反斜杠转义的序列都将按字面处理.http://msdn.microsoft.com/en-us/library/362314fe(v=VS.100).aspx进一步解释并举例说明. (2认同)

Nei*_*l N 64

这也意味着您可以使用保留字作为变量名

假设你想要一个名为class的类,因为class是保留字,你可以改为调用你的类类:

IList<Student> @class = new List<Student>();
Run Code Online (Sandbox Code Playgroud)

  • 这很酷 - 我不知道你能做到这一点.谢谢 (3认同)
  • 真实但偏离主题. (2认同)

MrE*_*yes 14

用@前缀字符串表示它应该被视为文字,即没有转义.

例如,如果您的字符串包含路径,通常会执行此操作:

string path = "c:\\mypath\\to\\myfile.txt";
Run Code Online (Sandbox Code Playgroud)

@允许你这样做:

string path = @"c:\mypath\to\myfile.txt";
Run Code Online (Sandbox Code Playgroud)

注意缺少双斜线(逃逸)


Doo*_*loo 6

作为旁注,您还应该记住,"转义"意味着"使用反斜杠作为特殊字符的指示符".你可以把一行结尾放在一个字符串中,例如:

String foo = "Hello\

There";
Run Code Online (Sandbox Code Playgroud)