ADO CommandText语法

Chi*_*hin 1 c# string

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

两者似乎都很好.

command.CommandText = @"SELECT id FROM users";
Run Code Online (Sandbox Code Playgroud)

要么

command.CommandText = "SELECT id FROM users";
Run Code Online (Sandbox Code Playgroud)

And*_*are 5

这是C#的逐字字符串文字表示法.

逐字字符串文字前面有一个前导@,后面的引号之间的任何内容都@将被视为字符串文字的一部分而不需要转义.

请参阅String literals:

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

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

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

最有可能的是一个查询跨越了多行,而且任何人编写的代码都希望将它放在多行上,如下所示:

command.CommandText = @"SELECT id
                       FROM users";
Run Code Online (Sandbox Code Playgroud)

而没有逐字字符串文字,你必须这样做:

command.CommandText = "SELECT id"
                      + " FROM users";
Run Code Online (Sandbox Code Playgroud)