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文字列に関するものである場合、代わりにパラメーター化されたクエリを使用しない理由はありますか?
—
2015
「逐語的文字列(主にSQLステートメント)を使用して複数の行にまたがる文字列がたくさんあります」SQLインジェクション攻撃を可能にするSQL文字列がたくさんあるようです。
—
Cetin Basoz
@svick私たちは、ユーザー入力はすべてパラメーター化されています。ただし、コードでエンティティのSQLを動的に作成するため、動的SQLは引き続き頻繁に使用します。
—
キース
@CetinBasozは使用しません-すべてのユーザー入力はパラメーター化されます。動的SQLを使用している状況はたくさんあります。たとえば、LINQやその他のオブジェクトマッピングフレームワークです。
—
キース