2

可能重复:
C# 中字符串前面的@ 是什么?

为什么我们使用 我正在使用Windows 应用程序@来替换\另一个字符串string.replace(@"\","$$")C#

4

5 回答 5

6

字符串文字前面的@使其成为逐字字符串文字,因此反斜杠\不需要加倍。您可以使用"\\"代替来@"\"获得相同的效果。

于 2012-09-03T14:07:56.850 回答
3

因为如果你不这样做,你就不得不\带着\\

@习惯于所谓的逐字字符串

于 2012-09-03T14:07:45.210 回答
2

在 C# 中,您可以为字符串添加前缀@以使其逐字显示,因此您无需转义特殊字符。

@"\"

等同于

"\\"
于 2012-09-03T14:08:16.263 回答
1

C# 语言规范2.4.4.5 字符串文字状态:

C# 支持两种形式的字符串文字:常规字符串文字和逐字字符串文字。

常规字符串文字由用双引号括起来的零个或多个字符组成,如 "hello",并且可能包括简单的转义序列(如制表符的 \t)以及十六进制和 Unicode 转义序列。

逐字字符串文字由一个 @ 字符后跟一个双引号字符、零个或多个字符以及一个结束双引号字符组成。一个简单的例子是@"hello"。在逐字字符串文字中,分隔符之间的字符被逐字解释,唯一的例外是引号转义序列。特别是,简单的转义序列以及十六进制和 Unicode 转义序列不会在逐字字符串文字中进行处理。逐字字符串文字可能跨越多行。

使用字符的逐字字符串文字@使得在实用上转义几乎所有字符变得更容易,否则您必须使用\字符串中的字符单独转义。

注意:"即使使用逐字模式,字符仍然需要转义。

所以我会用它来节省时间,不必通过一个长字符串来转义所有需要转义的必要字符。

于 2012-09-03T14:33:31.967 回答
0

因为反斜杠被视为转义字符,如果不使用“@”,您将收到“无法识别的转义序列”错误。使用“@”告诉编译器忽略转义字符。可能会有所帮助。

于 2012-09-03T14:10:53.437 回答