ADO CommandText语法

时间:2009-07-22 00:05:19

标签: c# string

有谁知道为什么有时在commandText字符串之前使用@

两者似乎都很好。

command.CommandText = @"SELECT id FROM users";

command.CommandText = "SELECT id FROM users";

3 个答案:

答案 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]+")

逃避'\'。该示例更适用于更复杂的正则表达式。