@前缀对C#中字符串文字的作用是什么

时间:2011-05-26 06:28:36

标签: c# .net string syntax literals

我阅读了一些C#文章,使用Path.Combine组合路径(第1部分,第2部分)。

它使用以下内容:

string part1 = @"c:\temp";
string part2 = @"assembly.txt";

我可以知道第1部分和第2部分中@的用途是什么吗?

6 个答案:

答案 0 :(得分:59)

@与任何方法无关。

这意味着您不需要在符号后面的字符串中转义特殊字符:

@"c:\temp"

等于

"c:\\temp"

这种字符串称为“逐字”或@ -quoted。请参阅MSDN

答案 1 :(得分:17)

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

string s1 =@"C:\MyFolder\Blue.jpg";

另一种用法是当你有大字符串并希望它显示在多行而不是长行时。

string s2 =@"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";

答案 2 :(得分:13)

C# Language Specification 4.0中所述:

  

2.4.4.5字符串文字

     

C#支持两种形式的字符串   文字:常规字符串文字和   逐字字符串文字。经常   字符串文字由零或   更多字符用double括起来   引号,如“你好”,可能包括   两个简单的转义序列(如   \ t为标签字符),和   十六进制和Unicode转义   序列。逐字字符串文字   由@字符后跟   双引号字符,零或更多   字符和结束双引号   字符。一个简单的例子是   @“你好”。在逐字字符串中   字面意思,字面之间的字符   分隔符是逐字解释的,   唯一的例外是a   引号转义序列。特别是,   简单的转义序列,和   十六进制和Unicode转义   不处理序列   逐字字符串文字。

答案 3 :(得分:4)

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

不使用@,示例的第一行必须是:

string part1 = "c:\\temp";

更多信息here

答案 4 :(得分:1)

使用@你不必逃避特殊字符。

所以你必须在没有@

的情况下写“c:\\ temp”

如果更加假设它被称为“逐字”字符串。你可以在这里读到它:
http://msdn.microsoft.com/en-us/library/aa691090(v=vs.71).aspx

答案 5 :(得分:1)

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