Trong C # 6 có một tính năng mới: chuỗi nội suy.
Những thứ này cho phép bạn đặt các biểu thức trực tiếp vào mã, thay vì dựa vào các chỉ mục:
string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
Trở thành:
string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
Tuy nhiên, chúng tôi có rất nhiều chuỗi trên nhiều dòng bằng cách sử dụng các chuỗi nguyên văn (chủ yếu là các câu lệnh SQL) như thế này:
string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());
Hoàn nguyên những thứ này thành các chuỗi thông thường có vẻ lộn xộn:
string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();
Làm cách nào để sử dụng cả nguyên văn và chuỗi nội suy với nhau?
3
Nếu đó thực sự là về các chuỗi SQL, có lý do nào khiến bạn không sử dụng các truy vấn được tham số hóa không?
—
svick
"Chúng tôi có rất nhiều chuỗi trên nhiều dòng bằng cách sử dụng các chuỗi nguyên văn (chủ yếu là các câu lệnh SQL)" nghe có vẻ như bạn có rất nhiều chuỗi SQL cho phép các cuộc tấn công SQL SQL.
—
Cetin Basoz
@svick chúng tôi là, mọi thứ người dùng nhập vào đều được tham số hóa. Mặc dù vậy, chúng tôi vẫn sử dụng SQL động rất nhiều, vì chúng tôi tự động tạo SQL cho các thực thể của mình trong mã.
—
Keith
@CetinBasoz chúng tôi không - tất cả đầu vào của người dùng được tham số hóa. Có rất nhiều trường hợp bạn có SQL động - ví dụ LINQ hoặc bất kỳ khung ánh xạ đối tượng nào khác.
—
Keith