@前缀对C#中的string文字做了什么?

我读了一些C#文章来结合使用Path.Combine(part1,part2)的path。 它用

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

我不知道在part1和part2中使用@什么用处。

@与任何方法都没有关系。

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

 @"c:\temp" 

等于

 "c:\\temp" 

这样的string被称为“逐字”或@引用。 请参阅MSDN 。

正如其他人所说的一种方式,以便您不需要转义特殊字符,并在指定文件path非常有用。

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

还有一种用法是,当你有很大的string,并希望跨越多行显示而不是长时间显示。

 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"; 

如C#语言规范4.0所述 :

2.4.4.5string文字

C#支持两种forms的string文字:常规string文字和逐字string文字。 常规string文字由零个或多个用双引号括起来的字符组成,如“hello”,并且可能包含简单转义序列(如制表符的\ t)以及hex和Unicode转义序列。 逐字string文字由一个@字符,后跟一个双引号字符,零个或多个字符和一个双引号字符组成。 一个简单的例子是@“你好”。 在逐字string文字中,分隔符之间的字符是逐字解释的,唯一的例外是一个quote-escape-sequence。 特别是,简单的转义序列以及hex和Unicode转义序列不会在逐字string文字中处理。

它表示一个逐字string字面值,并允许使用通常具有特殊含义的特定字符,例如\ ,通常是一个转义字符和新行。 因为这个原因,在处理Windowspath时非常有用。

没有使用@ ,你的例子的第一行将不得不是:

 string part1 = "c:\\temp"; 

更多信息在这里 。

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

所以你将不得不编写“c:\\ temp”

如果更多地指出它被称为“逐字”string。 你可以在这里读到它:
http://msdn.microsoft.com/en-us/library/aa691090(v=vs.71).aspx

@只是指定了一种不同的方式来指定一个string,以便您不必使用转义字符。 唯一需要注意的是双引号需要“”来表示一个单独的“。