Sayılar, tarihler ve saatler dizgilere biçimlendirildiğinde veya dizelerden ayrıştırıldığında, nasıl yapıldığını belirlemek için bir kültür kullanılır. Örneğin, baskın en-USkültürde şu sicim temsillerine sahipsiniz:
- 1.000.000,00 - iki basamaklı bir kesire sahip bir milyon
- 29.01.2013 - bu yayının tarihi
Benim culture ( da-DK) değerleri şu dize temsil var:
- 1.000.000,00 - iki basamaklı kesirli bir milyon
- 29-01-2013 - bu yayının tarihi
Windows işletim sisteminde, kullanıcı sayıların ve tarih / saatlerin nasıl biçimlendirileceğini bile özelleştirebilir ve ayrıca işletim sisteminin kültüründen başka bir kültür seçebilir. Kullanılan biçimlendirme, kullanıcının nasıl olması gerektiğinin seçimidir.
Bu nedenle, örneğin kullanılarak ToStringveya görüntülenecek bir değeri biçimlendirdiğinizde veya String.Formatveya bir dizeden ayrıştırıldığında DateTime.Parseveya Decimal.Parsevarsayılan kullanarak kullanmaktır CultureInfo.CurrentCulture. Bu, kullanıcının biçimlendirmeyi kontrol etmesini sağlar.
Bununla birlikte, çok sayıda dize biçimlendirme ve ayrıştırma aslında uygulama ve kullanıcı arasında değil, uygulama ve bazı veri formatı (örneğin bir XML veya CSV dosyası) arasında değiş tokuş edilen dizelerdir. Bu durumda kullanmak istemezsiniz CultureInfo.CurrentCultureçünkü biçimlendirme ve ayrıştırma farklı kültürlerle yapılırsa kırılabilir. Bu durumda CultureInfo.InvariantCulture( en-USkültüre dayalı) kullanmak istersiniz . Bu, değerlerin sorunsuz bir şekilde geri dönmesini sağlar.
ReSharper size uyarı verir sebebi bazı uygulama yazarları istenmeyen sonuçlara yol açabilir bu ayrım habersiz ama onların çünkü bu keşfetmek asla olmasıdır CultureInfo.CurrentCultureDİR en-USolarak aynı davranışa sahip CultureInfo.InvariantCulture. Ancak, uygulama biçimlendirmek için bir kültür kullanma ve başvuruyu ayrıştırmak için başka bir kültür kullanma şansının bulunduğu başka bir kültürde kullanılır kullanılmaz.
Özetlemek gerekirse:
CultureInfo.CurrentCultureBir kullanıcı dizesini biçimlendiriyorsanız veya ayrıştırıyorsanız (varsayılan) seçeneğini kullanın .
CultureInfo.InvariantCultureBir yazılım parçası tarafından ayrıştırılması gereken bir dizeyi biçimlendiriyorsanız veya ayrıştırıyorsanız kullanın .
- Nadiren belirli bir ulusal kültür kullanın, çünkü kullanıcı biçimlendirme ve ayrıştırma işleminin nasıl yapıldığını kontrol edemez.