有谁知道为什么有时在commandText字符串之前使用@
?
两者似乎都很好。
command.CommandText = @"SELECT id FROM users";
或
command.CommandText = "SELECT id FROM users";
答案 0 :(得分:5)
这是C#的逐字字符串文字表示法。
逐字字符串文字前面是前导 @
, @
之后的引号之间的任何内容都将被视为字符串文字,无需转义。
请参阅String literals:
C#支持两种形式的字符串 文字:常规字符串文字和 逐字字符串文字。
常规字符串文字由 括起来的零个或多个字符 双引号,如“你好”,并可能 包括简单的转义序列 (例如\ t表示制表符)和 十六进制和Unicode转义 序列。
逐字字符串文字由 一个@字符后跟一个 双引号字符,零或更多 字符和结束双引号 字符。一个简单的例子是
@"hello"
。在逐字字符串中 字面意思,字面之间的字符 分隔符是逐字解释的, 唯一的例外是a 引号转义序列。特别是, 简单的逃逸序列和 十六进制和Unicode转义 不处理序列 逐字字符串文字。一字不差 字符串文字可能跨越多个 线。 强>
很可能一个查询跨越了多行,而且有人编写了想要将它放在多行上的代码,如下所示:
command.CommandText = @"SELECT id
FROM users";
如果没有逐字字符串文字,你必须这样做:
command.CommandText = "SELECT id"
+ " FROM users";
答案 1 :(得分:0)
&安培; =&符号 @ = at(或以此速度)
答案 2 :(得分:0)
@是逐字字符串运算符。它在处理正则表达式时非常方便。如果您要查找空格字符,可以指定
new RegEx( @"[\w]+")
而不是
new RegEx("[\\w]+")
逃避'\'。该示例更适用于更复杂的正则表达式。