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-US
kü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 ToString
veya görüntülenecek bir değeri biçimlendirdiğinizde veya String.Format
veya bir dizeden ayrıştırıldığında DateTime.Parse
veya Decimal.Parse
varsayı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-US
kü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.CurrentCulture
DİR en-US
olarak 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.CurrentCulture
Bir kullanıcı dizesini biçimlendiriyorsanız veya ayrıştırıyorsanız (varsayılan) seçeneğini kullanın .
CultureInfo.InvariantCulture
Bir 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.