可能重複:
What's the @ in front of a string for .NET?@(AT)的文件路徑/符號字符串
我有以下代碼:
new Attachment(Request.PhysicalApplicationPath + @"pdf\" + pdfItem.Value)
什麼的@
徵辦?
可能重複:
What's the @ in front of a string for .NET?@(AT)的文件路徑/符號字符串
我有以下代碼:
new Attachment(Request.PhysicalApplicationPath + @"pdf\" + pdfItem.Value)
什麼的@
徵辦?
它與filepath無關。它改變了字符串的轉義行爲。
在以@
開頭的字符串文字中,以\
開頭的轉義序列被禁用。這對於文件路徑很方便,因爲\
是路徑分隔符,您不希望它啓動轉義序列。
在一個正常的字符串,你將不得不逃離\
到\\
所以你的例子看起來像這樣的「PDF \\」。但由於它的前綴爲@
,因此唯一需要轉義的字符是"
(轉義爲""
),並且\
可以簡單地出現。
此功能對包含\
的字符串文字很方便,如文件路徑或正則表達式。
爲您簡單的例子增益不那麼大,但是像你有一個完整的路徑"C:\\ABC\\CDE\\DEF"
然後@"C:\ABC\CDE\DEF"
看起來要好很多。
對於正則表達式來說,它幾乎是必須的。正則表達式通常包含幾個已經逃脫其他角色的\
,如果你需要逃避它們,通常會變得幾乎不可讀。
它可以讓你沒有逃脫它進入反斜線(\):在具有相同內容的字符串
var s1 = "C:\\Temp\\MyFileName";
var s2 = @"C:\Temp\MyFileName";
兩個結果(和因爲字符串是interned在編譯時,甚至可能相同字符串引用)。
這允許包含反斜槓,甚至換行沒有他們的字符串被不同的處理:
string multiLineString = @"First line
second line
third line";
由於反斜槓不用於逃避,插入一個雙引號串入要求它增加一倍:
string withQuote = @"before""after";
逐字字符串通常用於文件路徑(如你所示)和正則表達式,這兩個經常使用的反斜槓。
查看我的article on strings瞭解更多信息。
那麼它是如何改變它的? – Sally 2011-03-03 10:23:08
@Sally在刪除'@'之後嘗試運行您的代碼並查看其差異! – Mayank 2011-03-03 10:24:12
或者,'Path'類也適用於文件系統路徑。 – 2011-03-03 10:24:29