in ,

C # Dize Enterpolasyonu

Geliştiriciler, herhangi bir sisteme dizeler eklerken yerelleştirme (çeviri) dikkate almalıdır. zorunlu değildir, string enterpolasyonu genellikle string hazırlıkları için bileşik format kullanmaktan daha iyidir.

Dize enterpolasyonu, enterpolasyon ifadeleriyle string değişmezlerinin oluşturulmasına izin verir. Sözdizimi dizeleri biçimlendirmek için elverişlidir ve genellikle bileşik biçimlendirmeden daha okunaklıdır (örneğin, string.Format (). C #, sürüm 6’daki özelliği ekledi. Geliştiriciler, herhangi bir sisteme dizeler eklerken yerelleştirme (çeviri) dikkate almalıdır. zorunlu değildir, string enterpolasyonu genellikle string hazırlıkları için bileşik format kullanmaktan daha iyidir.

Dize Biçimlendirme Seçenekleri

İşte enterpolasyonlu bir dizge örneği  . Biçimlendirilmiş dizenin bir parçası olarak 10 tamsayısını içerir.

var errorCode = 10;

var message = $ "Bir hata oluştu. Hata kodu: {errorCode}";

Çıktısı:
Bir hata oluştu. Hata kodu: 10

Dize değişmezinin okunması kolay olduğuna dikkat edin. Geleneksel dize bitiştirme ile eşdeğerdir.

var errorCode = 10;

var message = $ "Bir hata oluştu. Hata kodu:" + errorCode;

Artı operatörün dizgesinin değişmez kelimeyi okumayı zorlaştırdığına ve genellikle bildirimin daha uzun sürdüğüne dikkat edin. Kompozit formatlamaya eşdeğerdir.

var errorCode = 10;

var message = string.Format ("Bir hata oluştu. Hata kodu: {0}", errorCode);

Bu yöntemin hataya açık olduğuna dikkat edin, çünkü Format  işlevine iletilen bağımsız değişkenlerin sayısı  değişmez dizgede belirtilen sayılarla eşleşmelidir. Olmazsa, uygulama bir istisna atar.

Enterpolasyon Sembolleri $ {} ()

Geliştiriciler, herhangi bir dizgiyi değişmez bir enterpolasyonlu dizeye dönüştürebilirler. Bunu yapmak için, değişmezi dolar işareti simgesiyle hazırlayın. Derleyiciye ya da sözdizimi ayrıştırıcıya, dizgenin değişmezde enterpolasyon ifadeleri içerdiğini söyler. Derleme zamanında, derleyici genellikle ifadeyi bir string.Format veya benzer bir çağrıya dönüştürür.

Bir enterpolasyon ifadesi belirtmek için  , ifadeyi bir parantezle açın {ve daha sonra kapatın}. Parantezlerin içindeki ifade, çalışma zamanında değişmez dizgeye dönüştürülür. Bu örnek, kelimenin tam anlamıyla ifadelerin kullanımını gösterir.

var item = new {Ad = "Muz", Fiyat = (ondalık) 1};

var message = $ "Bu öğe bir {item.Name} 'dir ve ücreti $ {item.Price}";

Çıktı:

Bu ürün bir muz ve 1 $ maliyeti

Hazır bilginin başlangıcındaki dolar işareti, dizenin enterpolasyon içerdiğini belirttiğine dikkat edin. Ancak, ikinci dolar işareti değişmezin normal bir parçası olarak değerlendirilir ve değişmez içinde herhangi bir yere dahil edilebilir.

Koşullu işleci ile koşullu ifadeler belirtmek için  , ifadeyi parantez içinde sarmanız gerekir. İşte bir örnek.

var item = new {Ad = "Muz", Fiyat = (ondalık) 1, IsYellow = true};

var message = $ "Bu öğe {(item.IsYellow?" yellow ":" sarı değil ")}";

Çıktı

Bu ürün sarı

Dize, “IsYellow” doğru olduğunda “sarı” ve yanlış olduğunda “sarı değil” olduğuna dikkat edin. Aşağıdaki örnek   , koşullu kod ifadeyi parantez içine almadığından derlenmez.

Refactoring Araçları

Araçlar, dize değişmezlerini otomatik olarak enterpolasyonlu dizelere dönüştürmek ve bulmak için kullanılabilir. Aşağıda, FxCop kuralları açık olan Visual Studio C # projesinin bir örneği verilmiştir. Enterpolasyonlu dizelerin kullanılabileceği durumları bulmak ve onları enterpolasyona dönüştürmek için yardımcı olabilir. Diğer birçok refactoring aracı da benzer işlevselliğe sahiptir.

Internationalization

Geliştiriciler, genel olarak dizgenin değişmezlerini, uygulamanın kullanıcının yerel dilinde alabileceği konumlarda saklamalıdır. Geliştiriciler bunu bir projenin başında düşünmelidir. Bununla birlikte, uluslararasılaştırma her zaman belirli bir proje için bir gereklilik değildir ve bazen sistem düzeyinde hata mesajları ve İngilizce olarak kalması kabul edilebilir.

Metni birden çok dile çevirirken, dize değişmezlerini çalışma zamanında dize değiştirmeye izin verecek şekilde depolamak genellikle gerekir. İngilizce dışındaki diller genellikle İngilizce ile aynı kelime sıralamasına sahip değildir, bu yüzden yine de string.Format gibi uluslararasılaşma için kullanmak gerekebilir.

var errorCode = 10;

var cultureInfo = yeni CultureInfo ("en-US");

var rawResource = ResourceFile.GetString ("ErrorMessage", cultureInfo);

var message = string.Format (rawResource, errorCode);

Bu durumlarda, dize enterpolasyonu uygun olmaz.

Çeviriye izin vermenin en yaygın yolu, dizeleri kaynak dosyalarında saklamaktır. Ancak, bu dizeleri DLL’lere dönüştürür ve yeniden derlemeden ve yeniden dağıtmadan bunları değiştirmeyi imkansız hale getirir. Bulut tabanlı bir dize çeviri API’si kullanmak daha iyi olur.

Sonuç

Dize enterpolasyonu, okunaklılığı ve string değişmezlerinin özlüğünü arttırır. Dize değişmezlerini kodda bırakmak her zaman uygun değildir, ancak uygun olduğunda geliştiriciler dize enterpolasyonu kullanmalıdır. İşlevsellikten yararlanmanın en kolay yolu, dize değişmezlerini enterpolasyonlu dizgelere dönüştürmeye yardımcı olacak bir araç bulmaktır. 

Ne düşünüyorsun?

324 points
Upvote Downvote

Yazar Cem Y.

Comments

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yükleniyor…

0

Comments

0 comments

İlaç satışlarındaki düşüş doktorları internete yönlendiriyor

Başlangıç ​​seviyesindeki programlama becerilerinizden nasıl para kazanabilirsiniz?