Harika özellik. Ben sadece bu string.format neden bazı insanlar için belirgin değilse neden daha iyi vurgulamak istiyorum.
Parametreleri eşleştirmek için "{0} {1} {2}" düzenine string.format diyen birini okudum. String.format içinde "{0} {1} {2}" sipariş etmek zorunda değilsiniz, "{2} {0} {1}" de yapabilirsiniz. Ancak, 20 gibi çok sayıda parametreniz varsa, dizeyi gerçekten "{0} {1} {2} ... {19}" olarak sıralamak istersiniz. Karışık bir karmaşa ise, parametrelerinizi sıralamakta zorlanırsınız.
$ İle parametrelerinizi saymadan satır içi parametre ekleyebilirsiniz. Bu, kodun okunmasını ve bakımını çok daha kolay hale getirir.
$ Dezavantajı, parametreyi dizede kolayca tekrarlayamazsınız, yazmanız gerekir. Örneğin, System.Environment.NewLine yazmaktan sıkıldıysanız string.format ("... {0} ... {0} ... {0}", System.Environment.NewLine), ancak, $ cinsinden tekrarlamanız gerekir. $ "{0}" yapamazsınız ve $ "{0}", "0" döndürdüğü için string.format'a iletemezsiniz.
Yan notta, başka bir yinelenen tpoic yorum okudum. Yorum yapamadım, işte burada. Dedi ki
string msg = n + " sheep, " + m + " chickens";
birden fazla dize nesnesi oluşturur. Aslında bu doğru değil. Bunu tek bir satırda yaparsanız, yalnızca bir dize oluşturur ve dize önbelleğine yerleştirilir.
1) string + string + string + string;
2) string.format()
3) stringBuilder.ToString()
4) $""
Hepsi bir dize döndürür ve önbellekte yalnızca bir değer oluşturur.
Diğer yandan:
string+= string2;
string+= string2;
string+= string2;
string+= string2;
4 ";" olduğundan önbellekte 4 farklı değer oluşturur.
Böylece, aşağıdaki gibi kod yazmak daha kolay olacaktır, ancak Carlos Muñoz'ın düzelttiği gibi beş enterpolasyonlu dize oluşturacaksınız:
string msg = $"Hello this is {myName}, " +
$"My phone number {myPhone}, " +
$"My email {myEmail}, " +
$"My address {myAddress}, and " +
$"My preference {myPreference}.";
Bu, kodu okumak çok kolayken önbellekte tek bir dize oluşturur. Performans hakkında emin değilim, ama eminim MS zaten yapmazsa onu optimize edecek.