KTm*_*ury 1 c# string verbatim-string
可能重复:
.NET前面的字符串前面的@是什么?
是什么@在这个SQL命令做什么?它的第一次和第二次出现是否有同样的目的?
static DataTable StaffsGetProjectIDHRCoordinators(SqlConnection conn, string targetDatabase)
{
try
{
SqlCommand cmd = new SqlCommand(@"
SELECT DISTINCT Staff.*
FROM Staff
INNER JOIN " + targetDatabase.Replace("'", "''") + @".dbo.ProjectHRCoordinator ProjectHRCoordinator
ON Staff.StaffID = ProjectHRCoordinator.HRCoordinatorStaffID
ORDER BY Staff.FName, Staff.LName", conn);
return ExecuteDataTable(cmd);
}
finally
{
if (conn.State != ConnectionState.Closed) conn.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
@在声明存储过程的参数时,我只是熟悉这些符号.
xan*_*tos 12
这意味着字符串是逐字字符串文字.该\不会以特殊的方式来处理.\n不是新线,它是斜线和n.对路径非常有用.
通常有一个包含C:\Windows\myfile.txt你的字符串需要"C:\\Windows\\myfile.txt"用逐字字符串文字写OR @"C:\Windows\myfile.txt".
甲逐字字符串由一个@字符后跟一个双引号字符,零个或多个字符,并且结束的双引号字符的.一个简单的例子就是@"你好".在逐字字符串文字中,分隔符之间的字符是逐字解释的,唯一的例外是quote-escape-sequence.特别是,简单的转义序列和十六进制和Unicode转义序列不会在逐字字符串文字中处理.逐字字符串文字可以跨越多行.
我将在你引用的SQL块中添加它,它用于能够在多行中编写脚本而不关闭字符串的每一行.如此绝对
string str = "A " +
"B " +
"C";
Run Code Online (Sandbox Code Playgroud)
你可以写
string str = @"A
B
C";
Run Code Online (Sandbox Code Playgroud)
请注意,这两个字符串是非常不同的!第二个包含行尾和对齐空格,但在SQL中这不是问题(SQL中的许多地方都会忽略空格).
您有可能在一行中编写SQL命令.然后这@完全没用,但是许多程序员采用"比安慰更好的安全"并且非常自由地使用它,特别是当他们从其他可能包含的地方粘贴文本时\ escapes:-)