SORU
18 Mart 2012, Pazar


Cultureınfo şeyi yapar.Invariantculture demek

Yani metin string var:

var foo = "FooBar";

string saniye bar adlı bildirmek ve bu benim ilk birinci ve dördüncü karakter için eşit olmak istiyorum, bu yüzden ben bunu foo,:

var bar = foo[0].ToString()   foo[3].ToString();

Bu beklendiği gibi çalışır, ama ReSharper benim parantez içinde Culture.InvariantCulture koymak için destek veriyor, bu çizgi böyle biter:

var bar = foo[0].ToString(CultureInfo.InvariantCulture) 
          foo[3].ToString(CultureInfo.InvariantCulture);

Bu demek, ve benim program çalışır nasıl etkileyecek?

CEVAP
19 Ocak 2013, CUMARTESİ


Sayılar, tarihler ve saatler içinde dize biçimlendirilmiş veya dizeleri ayrıştırılmış bir kültür nasıl yapıldığını belirlemek için kullanılır. E. g. en-US egemen kültür bu dize temsilleri vardır:

  • 1,000,000.00 - iki basamaklı bir kesir ile bir milyon
  • 1/29/2013 - Kayıt tarihi

Benim kültürüm (da-DK) değerleri bu dize gösterimi:

  • 1.000.000,00 - iki basamaklı bir kesir ile bir milyon
  • 29-01-2013 - Kayıt tarihi

Windows işletim sisteminde kullanıcı çift sayı ve Tarih/times nasıl biçimlendirildiğini özelleştirebilirsiniz ve ayrıca işletim sistemini kültürünün dışında bir kültür seçebilirsiniz. Biçimlendirme nasıl kullanılmalıdır kullanıcı tercihidir.

Ne zaman sen biçim bir değeri görüntülenmesi için Kullanıcı kullanma örneği ToString String.Format ya da ayrıştırılmış bir dize kullanarak DateTime.Parse Decimal.Parse olarak kullan CultureInfo.CurrentCulture. Bu kullanıcı biçimlendirme kontrol etmenizi sağlar.

Ancak, dize biçimlendirme ve ayrıştırma bir sürü aslında dizeleri uygulama ve kullanıcı ancak uygulama ve bazı veri biçimi arasında (örneğin, bir XML veya CSV dosyası) arasında değiş tokuş değil. Bu durumda, biçimlendirme ve ayrıştırma farklı kültürler ile yapılırsa bozabileceği CultureInfo.CurrentCulture kullanmak istemiyorum. Bu durumda CultureInfo.InvariantCulture en-US kültüre dayanan () kullanmak istiyorsunuz. Bu değerler bir sorun olmadan gidiş dönüş sağlar.

Nedeni ReSharper size uyarı Bazı uygulama yazarlar habersiz bu ayrım yol açabilecek istenmeyen sonuçlar ama asla keşfetmek çünkü bu onların CultureInfo.CurrentCulture en-US aynı davranış olarak CultureInfo.InvariantCulture. Biçimlendirme ve uygulama ayrıştırma başka bir kültür kullanarak bir şans olduğu ancak, uygulama eskiden olduğu kadar kısa sürede başka bir kültür içinde kesilebilir.

Özetle:

  • Eğer veya kullanıcının bir dize biçimlendirme ayrıştırma CultureInfo.CurrentCulture (varsayılan) kullanın.
  • Eğer veya yazılım parçası tarafından parseable gereken bir dize biçimlendirme ayrıştırma CultureInfo.InvariantCulture kullanın.
  • Kullanıcı biçimlendirme ve ayrıştırma yapılır nasıl kontrol edemiyor çünkü nadiren belirli bir Ulusal Kültür kullanın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ibebrent

    ibebrent

    23 Temmuz 2007
  • Matthew Pearce

    Matthew Pear

    9 AĞUSTOS 2009
  • NPR

    NPR

    22 NİSAN 2006