SORU
13 Aralık 2011, Salı


Int32.() Olabilirdi kültür özel?

ReSharper beta sürümünü kullanıyorum ve aşağıdaki kodu için bana uyarı veriyor:

int id;
// ...
DoSomethingWith(id.ToString());

Uyarı id.ToString() önce aradı, ve bana diyor ki "dize dönüştürme kültür açıkça Belirtin". Uyarı anlıyorum, ve çok daha hantal id.ToString(CultureInfo.InvariantCulture) kodu değiştir -- sadece nasıl düzelteceğimi biliyorum.

Ama benim sorum: gerekli mi? Yani, belli ki bir başka önemli nokta da belirtmek kültürü ne zaman kullanıyorsun türleri gibi DateTime (farklı kültürlere sahip farklı tarih biçimleri) ve Double (farklı karakterler kullanılan ondalık noktası). Ama en azından TR ve değişmeyen kültürleri içinde Int32.ToString(), herhangi bir biçimlendirme hiç mantıklı değil. Hayır virgül, ondalık sayılar, dolar işareti, hiçbir şey yok. Kültüre göre değişir ne olurdu?

Bazı kültürlerde bu var aslındaekleyinbu parametresiz Int32.ToString() çağırdığınızda biçimlendirme mi? Ya bu ReSharper beta, ve bu uyarı gerçekten uygulanabilir 10 ** için değil bir hata bu durumda ReSharper hata rapor edeceğim (?)

CEVAP
13 Aralık 2011, Salı


İşletim Sistemini değiştirmek için izin verirnegatif işaretisayılar için.

Control panel -> 
   Language and regional settings -> 
         Additional settings -> 
             Negative sign

Bu yüzden, mevcut kültür negatif işareti geçersiz olabilir. Bölgesel ayarlar saygı duymalısın bu durumda, bu uyarı sebebidir. Ayrıca negatif işareti programlama yoluyla değiştirebilirsiniz:

    CultureInfo culture = Thread.CurrentThread.CurrentCulture;
    // Make a writable clone
    culture = (CultureInfo) culture.Clone();
    culture.NumberFormat.NegativeSign = "!";

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Noam Erez

    Noam Erez

    3 NİSAN 2012
  • RiceBunny

    RiceBunny

    16 ŞUBAT 2006
  • WoodysGamertag

    WoodysGamert

    17 Aralık 2009