2013-11-22 34 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";