2011-05-26 68 views

回答

48

@与任何方法无关。

这意味着你不需要逃避以下的符号字符串中的特殊字符:

@"c:\temp" 

等于

"c:\\temp" 

这样的字符串被称为“逐字”或@ -引。请参阅MSDN

4

它表示逐字字符串文字,并允许您使用通常具有特殊含义的某些字符,例如\(通常为转义字符)和新行。由于这个原因,它在处理Windows路径时非常有用。

不使用@,你的榜样的第一行必须是:

string part1 = "c:\\temp"; 

更多信息here

1

@只是表示指定一个不同的方式来指定一个字符串,这样你就不必用字符转义。唯一需要注意的是,双引号需要“”代表单个”

12

正如C# Language Specification 4.0说:

2.4.4.5字符串

C#支持两种形式的字符串 文字的:常规字符串文字和 逐字字符串常量 字符串常量由零或 组成,其中包含更多的字符,双“ ”引号,如“hello”中所示,并且可能包括 两种简单转义句法(如 \ t为制表符),和 十六进制和Unicode转义 序列。逐字字符串字面值 由@字符组成,后面跟着 一个双引号字符,零个或多个 个字符,以及一个结尾双引号 字符。一个简单的例子是 @“hello”。在逐字字符串 文字中, 分隔符之间的字符被逐字解释, 唯一的例外是 quote-escape-sequence。特别是, 简单转义序列和 十六进制和Unicode转义 序列在 逐字字符串文字不处理。

14

正如其他人所说的那样,您不需要转义特殊字符并且在指定文件路径时非常有用。

string s1 [email protected]"C:\MyFolder\Blue.jpg"; 

还有一个用途是当你有大量的字符串,并希望它横跨多行而不是一个漫长的显示。

string s2 [email protected]"This could be very large string something like a Select query 
which you would want to be shown spanning across multiple lines 
rather than scrolling to the right and see what it all reads up";