2013-11-22 32 views
1

「@」意味着什麼?路徑中「@」字符的文檔在哪裏?@字符在p中做了什麼

FileStream stream = new FileStream(@"FakeData.xml", FileMode.Open); 
+1

它可以確保你沒有逃脫每個反斜槓(例如),而只是讓你輸入正常的URI。 –

回答

4

當你的前綴字符串文本以@符號,你已經創造了什麼被稱爲逐字字符串。使用逐字字符串,可以禁用字面轉義字符的處理並按原樣打印字符串。當使用表示目錄和網絡路徑的字符串時,這可能非常有用。因此,而不是利用的\轉義字符,你可以簡單地寫:

Console.WriteLine(@"C:\MyApp\bin\Debug"); 

還要注意的是逐字字符串可以用來保存空白對於流動多行字符串。

string myLongString = @"This is a very 
very 
    very 
     long string"; 
Console.WriteLine(myLongString); 

使用逐字字符串,你也可以直接通過加倍「令牌插入一個雙引號爲文本字符串。

Console.WriteLine(@""""); 
2

它不在路徑中,而是說應該從字面上理解字符串。

http://msdn.microsoft.com/en-us/library/aa691090(v=vs.71).aspx

例如:

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 
6
http://msdn.microsoft.com/en-us/library/aa691090%28v=vs.71%29.aspx

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

常規字符串文字由零個或多個用雙引號引起來的字符組成,如「hello」,並且可能包含簡單轉義序列(如製表符的\ t)以及十六進制和Unicode轉義序列。

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

2

這意味着「逐字」或採取字符串literally@設置文件的路徑時,常用的有:

@"C:\MyFolder\file.txt"

否則,您必須逃離反斜槓:

"C:\\MyFolder\\file.txt"

它通常是有益的,但它也可以是一個麻煩。當我處理雙引號時,我傾向於將@與字符串連接結合起來。

 string a = "\""; 
     //string b = @"\"";//does not compile 
     string c = "\"" + @"C:\Path\File.txt" + "\"";//useful for outputting to command line 

     Console.WriteLine("prints quote {0} prints path surrounded by quotes {1}",a, c); 
+1

這兩個很好的答案,但唉,只有一個答案,仍然得到upvote。 – Joe

1

「@」 是逐字字符串。它用於字符串文字。使用你需要轉義雙斜線的文件路徑。它寫入確切的文字。不需要轉義。

爲如:■tring path [email protected]"c:\demo\files\txt2.text";