Doğru konum, bu yeni C 6. özelliktir
bir dize önce $
işareti derleyici özel dize ayrıştırmak olacaktır. dize interpolasyon sağlar ve küme parantezi içindeki ifadelerin, yerinde dizeye değerlendirilecek ve eklenecektir.
aynı dönüşür kaputun altında bu gibi bir şey:
var path = string.Format("'{0}'", pathRelative);
en bu pasajı için IL bakalım:
// var test = "1";
IL_0001: ldstr "1"
IL_0006: stloc.0
// var val1 = $"{test}";
IL_0007: ldstr "{0}"
IL_000c: ldloc.0
IL_000d: call string [mscorlib]System.String::Format(string, object)
IL_0012: stloc.1
// var val2 = string.Format("{0}", test);
IL_0013: ldstr "{0}"
IL_0018: ldloc.0
IL_0019: call string [mscorlib]System.String::Format(string, object)
IL_001e: stloc.2
Yani iki derlenmiş uygulamada aynıdır: derler
var test = "1";
var val1 = $"{test}";
var val2 = string.Format("{0}", test);
.
C# dize enterpolasyon sözdizimi ile ilgili bir not: Orijinal C 6. önizleme erken bloglarda çok fazla dikkat var bir different syntax çünkü maalesef sular dize enterpolasyon hemen çıkarıp bulandýrýlýyor. Dize enterpolasyonu için ters eğik çizgi kullanmaya yönelik çok fazla referans göreceksiniz, ancak bu artık sözdizimsel olarak geçerli değil.
@JeroenVannevel Evet, şimdi ne olduğunu açıklıyor ama sorunun adı onu bulmakta zorlanıyor ve kabul edilen cevap eski. Yani bence hala sormaya değer mi? – Yves
Bu bana bir kopya gibi görünmüyor. Zaten sizin için $ ne olduğunu bilmeden başka bir soru bulamazsınız. –
@RichardDalton: Bu aynı soru olmadığı anlamına gelmez. Sorunun yeniden yazılması, * çoğaltmanın bir nedeni değildir. Bu kabul edilen cevapla ilgili değil, güncellemek için eklenen 2. cevapla ilgili. Bu soru kapalı kalmalıdır. Eğer katılmıyorsanız, daha fazla tartışmak için her zaman http://meta.stackoverflow.com/ var. –