2015-07-26 13 views
74

C# 6'da yeni bir özellik var: enterpolasyonlu dizeler.Verbatim dizelerini enterpolasyon ile nasıl kullanıyorsunuz?

Bunlar daha ziyade endeksler güvenmek yerine, doğrudan koda ifadeleri etsinler: Ancak

string s = $"Adding \"{x}\" and {this.Y()} to foobar."; 

, biz (kelimesi kelimesine dizeleri kullanılarak birden fazla satıra dizeleri bir şey var:

string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y()); 

Oldu temel olarak SQL deyimleri) şöyle:

Bunları sıradan strin'e döndürme gs dağınık görünüyor:

string s = "Result...\r\n" + 
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" + 
x.GetLog().ToString(); 

birlikte nasıl hem kelimesi kelimesine ve interpolated dizeleri kullanıyoruz?

+3

o SQL dizeleri olduğudur, bunun yerine parametrized sorguları kullanarak değiliz herhangi bir neden var mı? – svick

+1

"Verbatim dizeleri (çoğunlukla SQL deyimleri) kullanarak çok sayıda satırda çok sayıda dizgimiz var" SQL Injection saldırılarını etkinleştiren çok sayıda SQL dizginiz var gibi görünüyor. –

+1

@svick biz, her şey kullanıcı girdisi parametrelenmiş. Dinamik SQL kullanıyoruz, ancak dinamik olarak koddaki varlıklar için SQL yaratıyoruz. – Keith

cevap

95

Aynı dizeye hem $ ve @ önekleri uygulayabilirsiniz:

string s = [email protected]"Result... 
Adding ""{x}"" and {this.Y()} to foobar: 
{x.GetLog()}"; 
+35

Karşıt ('@ $" ... "') çalışmıyor, bu da beni buraya getiriyor. – Sinatr

+7

@Sinatr evet, bu sırayla "$ @" ... "' olmalıdır. – Keith

+15

$ @ 'nin @ $' olduğunda çalışmadığı gerçeği, düşündüğünüzde mükemmel bir anlam ifade eder. Bu sözdizimini kullanmaya başladığımda sıkça karşılaştığım zaman, her zaman kendime şunu söyledim: "Bu söz dizimini yorumla", bunun tersi mantıklı olmaz. – Heki

İlgili konular