@前缀对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,以便您不必使用转义字符。 唯一需要注意的是双引号需要“”来表示一个单独的“。