@(at)login文件path/string

可能重复:
什么是在.NET的string前的@

我有以下代码:

new Attachment(Request.PhysicalApplicationPath + @"pdf\" + pdfItem.Value) 

@符号做什么?

它与filepath无关。 它改变了string的转义行为。

在以@开头的string文字中,以\开头的转义序列被禁用。 这对于文件path很方便,因为\是path分隔符,并且不希望它启动转义序列。

在一个正常的string中,你将不得不将\转换成\\所以你的例子看起来像这个“pdf \\”。 但是因为它的前缀是@ ,所以需要转义的唯一字符是" (它被转义为"" ),而\可以简单地出现。

这个特性对包含文件path或正则expression式的string文本很方便。

对于你的简单例子,增益不是那么大,但是你有一个完整path"C:\\ABC\\CDE\\DEF"那么@"C:\ABC\CDE\DEF"看起来好多了。

对于正则expression式来说,这几乎是必须的。 一个正则expression式通常包含几个\转义其他字符,如果您需要转义它们,通常会变得几乎不可读。

这是一个逐字string文字

这允许string包含反斜杠,甚至换行符,而不是以不同的方式处理:

 string multiLineString = @"First line second line third line"; 

由于反斜杠不用于转义,因此在string中插入双引号需要加倍:

 string withQuote = @"before""after"; 

逐字string文字通常用于文件path(如您所示)和正则expression式,两者经常使用反斜杠。

看到我的文章string了解更多信息。

它允许你input反斜杠(\)而不会转义它:

  var s1 = "C:\\Temp\\MyFileName"; var s2 = @"C:\Temp\MyFileName"; 

两者都会产生一个内容相同的string(因为string在编译时被执行,甚至可能是相同的string引用)。