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

Vai*_*ain 47 .net c# string syntax literals

我阅读了一些c#文章,使用Path.Combine(part1,part2)组合路径.它用

string part1 = @"c:\temp";
string part2 = @"assembly.txt";
Run Code Online (Sandbox Code Playgroud)

我不知道Path.Combinepart1和part2有什么用.

aba*_*hev 59

@ 与任何方法无关.

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

@"c:\temp"
Run Code Online (Sandbox Code Playgroud)

等于

"c:\\temp"
Run Code Online (Sandbox Code Playgroud)

这种字符串称为"逐字"或@ -quoted.请参阅MSDN.


V4V*_*tta 17

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

string s1 =@"C:\MyFolder\Blue.jpg";
Run Code Online (Sandbox Code Playgroud)

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

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";
Run Code Online (Sandbox Code Playgroud)


Ali*_*dah 14

C#语言规范4.0中所述:

2.4.4.5字符串文字

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


Wil*_*den 6

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

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

string part1 = "c:\\temp";
Run Code Online (Sandbox Code Playgroud)

更多信息请参见此处