@字符在pth中做了什么

时间:2013-11-22 03:17:24

标签: c# path

“@”是什么意思/做什么?路径中“@”字符的文档在哪里?

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

5 个答案:

答案 0 :(得分:6)

http://msdn.microsoft.com/en-us/library/aa691090%28v=vs.71%29.aspx

C#支持两种形式的字符串文字:常规字符串文字和逐字字符串文字。

常规字符串文字由用双引号括起来的零个或多个字符组成,如" hello",并且可能包括简单的转义序列(例如用于制表符的\ t)和十六进制和Unicode逃逸序列。

逐字字符串文字由@字符后跟双引号字符,零个或多个字符以及结束双引号字符组成。一个简单的例子是@"你好"。在逐字字符串文字中,分隔符之间的字符是逐字解释的,唯一的例外是quote-escape-sequence。特别是,简单的转义序列和十六进制和Unicode转义序列不会在逐字字符串文字中处理。逐字字符串文字可以跨越多行。

答案 1 :(得分:4)

当您使用@符号为字符串文字添加前缀时,您已创建了所谓的逐字字符串。使用逐字字符串,可以禁用文字转义字符的处理并按原样打印字符串。在处理表示目录和网络路径的字符串时,这可能非常有用。因此,您可以简单地编写以下内容,而不是使用\ escape字符:

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

另请注意,逐字符串可用于为跨越多行的字符串保留空白区域。

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

使用逐字字符串,您还可以通过将“令牌”加倍来直接将双引号插入文字字符串。

Console.WriteLine(@"""");

答案 2 :(得分: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

答案 3 :(得分: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);

答案 4 :(得分:1)

“@”是逐字字符串。它用于字符串文字。使用你需要转义双斜杠的文件路径的情况。它写出确切的文字。不需要逃脱。

例如:s tring path =@"c:\demo\files\txt2.text";