C#中字符串字面量前的@前缀是什么意思?

67

我读了一些C#文章,学习如何使用 Path.Combine(part1,part2) 方法来合并路径。

它的用法如下:

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

请问在part1和part2中,@有什么作用?

6个回答

87

@与任何方法无关。

它意味着您不需要对符号后面的字符串中的特殊字符进行转义:

@"c:\temp"

等于

"c:\\temp"

这样的字符串被称为“verbatim”或@引用。请参见MSDN


28

就像其他人说的那样,这是一种可以不需要转义特殊字符并且在指定文件路径时非常有用的方法。

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

14

C#语言规范4.0所述:

2.4.4.5 字符串字面量

C#支持两种形式的字符串字面量:普通字符串字面量和逐字字符串字面量。普通字符串字面量由双引号包含零个或多个字符组成,例如"hello",可以包含简单转义序列(例如\t代表制表符)、十六进制和Unicode转义序列。逐字字符串字面量由@符号后跟一个双引号字符、零个或多个字符和一个闭合双引号字符组成,例如@"hello"。在逐字字符串字面量中,定界符之间的字符按照字面意思解释,唯一的例外是引号转义序列。特别地,简单转义序列、十六进制和Unicode转义序列在逐字字符串字面量中不会被处理。


6

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

如果不使用@,则您的示例的第一行将需要是:

string part1 = "c:\\temp";

更多信息在这里


2

1

@符号只是一种不同的指定字符串的方式,这样您就不必使用.来转义字符。唯一的注意事项是双引号需要用""表示单个"。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接