2011-08-29 29 views

回答

2

@ -quoting的優點是轉義序列不處理, 這使得它很容易寫,例如,一個完全合格的文件名 :

@"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt" 
4

這是一個string literal。這基本上意味着它會採用除"之外的任何字符,包括新行。要寫出",請使用""

1

這意味着它是一個文字字符串。 如果沒有它,任何包含\的字符串都會將下一個字符視爲特殊字符,例如\ n代表新行。在@前面,它會直接處理\。

在你給出的例子中,輸出沒有區別。

0

這說雙引號內的字符應該完全按原樣解釋。

當使用@時,您可以看到反斜槓被視爲字符而不是 轉義序列。 C#編譯器還允許您使用真實文本中的真實換行符 。您必須用雙引號將報價編碼爲 。

string fileLocation = "C:\\CSharpProjects"; 
string fileLocation = @"C:\CSharpProjects"; 

here的例子。

0

C#支持兩種形式的字符串文字:常規字符串文字和逐字字符串文字。

  • 定期字符串文字包括在雙引號包圍 零個或多個字符,如「你好」,並且可以包括簡單轉義 序列(如\ t表示的製表符字符)和十六進制,以及Unicode轉義序列 。

  • 逐字字符串由一個@字符後跟一個 雙引號字符,零個或多個字符,並且閉合 雙引號字符的。一個簡單的例子是「你好」。在一個逐字 字符串文字中,分隔符之間的字符被逐字解釋爲 ,唯一的例外是quote-escape-sequence。在 特別是,簡單字符串文字不處理簡單轉義序列和十六進制和Unicode 轉義序列。 A 逐字字符串文字可能跨越多行。

代碼示例

string a = "hello, world";     // hello, world 
string b = @"hello, world";    // hello, world 
string c = "hello \t world";    // hello  world 
string d = @"hello \t world";    // hello \t world 
string e = "Joe said \"Hello\" to me";  // Joe said "Hello" to me 
string f = @"Joe said ""Hello"" to me"; // Joe said "Hello" to me 
string g = "\\\\server\\share\\file.txt"; // \\server\share\file.txt 
string h = @"\\server\share\file.txt";  // \\server\share\file.txt 
string i = "one\r\ntwo\r\nthree"; 
string j = @"one 
two 
three"; 

參考鏈接:MSDN