2011-08-29 27 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