在C#6中,有一个新功能:内插字符串。
这些使您可以将表达式直接放入代码中,而不是依赖索引:
string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
成为:
string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
但是,我们使用逐字字符串(主要是SQL语句)在多行中有很多字符串,如下所示:
string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());
将它们恢复为常规字符串似乎很麻烦:
string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();
如何同时使用逐字和内插字符串?
3
如果确实是关于SQL字符串的,那么是否有任何理由不使用参数化查询呢?
—
svick
“我们使用逐字字符串(主要是SQL语句)在多行中有很多字符串”听起来像您有很多启用SQL注入攻击的SQL字符串。
—
Cetin Basoz
@svick我们是,用户输入的所有内容均已参数化。但是,我们仍然大量使用动态SQL,因为我们在代码中为实体动态创建SQL。
—
基思
@CetinBasoz我们没有-所有用户输入均已参数化。在很多情况下,您都有动态SQL-例如LINQ或任何其他对象映射框架。
—
基思