Dati i seguenti due culture:.NET: ci sono differenze tra InvariantCulture e en-US?
CultureInfo c1 = InvariantCulture;
CultureInfo c2 = new CultureInfo("en-US");
ed io eravamo ad esaminare ogni pezzo di informazioni specifiche per entrambe le culture, per es .:
c1.DateTimeInfo.ShortDatePattern;
c2.DateTimeInfo.ShortDatePattern;
c1.DateTimeInfo.LongDatePattern;
c2.DateTimeInfo.LongDatePattern;
c1.NumberFormat.CurrencyDecimalDigits;
c2.NumberFormat.CurrencyDecimalDigits;
c1.TextInfo.IsRightToLeft;
c2.TextInfo.IsRightToLeft;
avrei trovato le differenze?
In altre parole, l'InvariantCulture, per tutti gli scopi, è identica alla cultura "en-US"?
Stai chiedendo questo solo come una curiosità? Ogni cultura ha casi d'uso specifici, che sono chiaramente definiti. Che siano o meno gli stessi è irrilevante per il processo di scrittura del software. –
stavo chiedendo perché volevo sapere se posso usare InvariantCulture quando intendo davvero "non so cosa sia la cultura." Cosa sono io, Google ?! " Se sto cercando di analizzare una data, un valore monetario o un numero, non so in quale cultura si trovi. E anche qui in en-US, ci sono diversi modi di scrivere una data. Come faccio a sapere quale sottocultura di en-US intendesse la persona? Quindi, chiedendo delle differenze tra loro, stavo vedendo quanto spesso riesco a cavarmela usando InvariantCulture, piuttosto che forzare CurrentThreadCulture, CurrentUICulture o CurrentCulture. –
Consiglierei di non provare a farla franca con niente. La cultura attuale dovrebbe essere usata per tutto ciò che non ha bisogno di essere invariante su macchine o cambiamenti culturali. Se stai tentando di analizzare dati sui quali non hai alcun controllo e che non corrispondono alla cultura corrente, non sono conformi a un particolare formato e non taggano la cultura che è stata utilizzata per crearlo, quindi, forse, la cultura dovrebbe essere selezionabile dall'utente o qualcosa del genere. Non penso che Invariant ti possa aiutare. –