@(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引用)。