2013-04-04 3 views
11

Penso di capire l'utilizzo di CultureInfo.ToString() default CultureInfo

Se faccio semplice:

const int a = 5; 
string b = a.ToString(); 

è uguale a:

const int a = 5; 
string b = a.ToString(CultureInfo.InvariantCulture); 

In altre parole, fa ToString() per difetto di uso InvariantCulture o CurrentCulture o nessuno dei due?

risposta

18

ToString utilizzerà CurrentCulture, non InvariantCulture se non si specifica una cultura.

2

La ToString attuazione di tutte le classi incorporati e tipi numerici utilizza di default il CultureInfo.CurrentCulture culture, la coltura utilizzato dal thread corrente.

Ciò significa che la cultura corrente (e quindi le funzioni di formattazione e analisi delle stringhe) sarà diversa da un sistema all'altro. Secondo me questo è un errore di progettazione e ha morso le persone in passato. Lo dovrebbe essere impostato su InvariantCulture e fornire gli stessi risultati su tutti i sistemi, ma sfortunatamente no.