Fark nedir ve ne zaman kullanılır? Her zaman kullanmamın riski nedir ToLower()ve her zaman kullanmamın riski ToLowerInvariant()nedir?
Fark nedir ve ne zaman kullanılır? Her zaman kullanmamın riski nedir ToLower()ve her zaman kullanmamın riski ToLowerInvariant()nedir?
Yanıtlar:
Mevcut kültüre bağlı olarak, ToLower beklemediğiniz bir kültüre özgü küçük harf üretebilir. ınfoBunun yerine i üzerinde nokta olmadan üretmek gibiinfo ve böylece dize karşılaştırmaları mucking gibi. Bu nedenle, dile özgü olmayan verilerde ToLowerInvariant kullanılmalıdır. Kendi ana dillerinde / karakter kümelerinde olabilecek kullanıcı girişiniz olabiliyorsa, genellikle ToLower'ı yalnızca kullanabilirsiniz.
Bu sorunun bir örneği için şu soruya bakın: C # - ToLower () bazen "I" harfinden nokta kaldırıyor
Bunun yararlı olabileceğini düşünüyorum:
http://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx
Güncelleme
Uygulamanız, geçerli kültürden etkilenmeyen öngörülebilir bir şekilde değişen bir dizenin durumuna bağlıysa, ToLowerInvariant yöntemini kullanın. ToLowerInvariant yöntemi, ToLower (CultureInfo.InvariantCulture) öğesine eşdeğerdir. Yöntem, bir kullanıcı arabirimi denetiminde bir dizeler koleksiyonunun öngörülebilir bir sırada görünmesi gerektiğinde önerilir.
Ayrıca
... ToLower çoğu yerde ToLowerInvariant'a çok benzer. Belgeler, bu yöntemlerin sadece Türk kültürleri ile olan davranışını değiştireceğini göstermektedir. Ayrıca, Windows sistemlerinde, dosya sistemi büyük / küçük harfe duyarlı değildir, bu da kullanımını daha da sınırlar ...
http://www.dotnetperls.com/tolowerinvariant-toupperinvariant
hth
String.ToLower()String.ToLowerInvariant()değişmez kültürü kullanırken varsayılan kültürü kullanır. Yani esasen değişmez kültür ve sıralı dizi karşılaştırması arasındaki farkları soruyorsunuz .
ToLowervaryantların tartışılmasıyla ilgili değildir ; Ordinal ve değişmez sadece iki dizenin "sıralama düzenini" değiştirir, eşitlik karşılaştırmasını değiştirmez.
TL; DR:
"İçerik" ile çalışırken (ör. Makaleler, yazılar, yorumlar, isimler, yerler, vb.) Kullanın ToLower(). "Değişmez değerler" ile çalışırken (örn. Komut satırı bağımsız değişkenleri, özel gramerler, numaralandırmalar olması gereken dizeler vb.) Kullanın ToLowerInvariant().
Örnekler:
= Yanlış kullanmaToLowerInvariant =
Türkçe'de DIŞ"dışarıda" ve diş"diş" anlamındadır. Uygun alt muhafaza DIŞolup dış. Yani ToLowerInvariantyanlış kullanırsanız Türkiye'de yazım hataları olabilir.
= Yanlış kullanmaToLower =
Şimdi bir SQL ayrıştırıcısı yazıyormuşsunuz gibi davranın. Bir yerde şöyle bir kod olacak:
if(operator.ToLower() == "like")
{
// Handle an SQL LIKE operator
}
Kültürleri değiştirdiğinizde SQL dilbilgisi değişmez. Bir Fransız SÉLECTIONNEZ x DE booksbunun yerine yazmaz SELECT X FROM books. Bununla birlikte, yukarıdaki kodun çalışması için bir Türk insanının yazması gerekir SELECT x FROM books WHERE Author LİKE '%Adams%'(başkent i üzerindeki noktayı not edin, görmek neredeyse imkansızdır). Bu, Türk kullanıcılarınız için oldukça sinir bozucu olacaktır.