Domanda

Come pensi che sia davvero necessario fornire IFormatProvider nel metodo String.Format (stringa, oggetto) ?

È meglio scrivere una variante completa

String.Format(CultureInfo.CurrentCulture, "String is {0}", str);

o solo

String.Format("String is {0}", str);

È stato utile?

Soluzione

In generale, ti consigliamo di utilizzare InvariantCulture se la stringa che stai generando deve essere mantenuta in modo indipendente dalla cultura dell'utente corrente (ad esempio nel registro o in un file).

Si desidera utilizzare CurrentCulture per le stringhe che devono essere presentate nell'interfaccia utente all'utente corrente (moduli, report).

Possono sorgere bug sottili se usi CurrentCulture dove dovresti usare InvariantCulture: bug che vengono alla luce solo quando hai più utenti con culture diverse che accedono alla stessa voce di registro o file o se un utente cambia la sua cultura predefinita.

Specifica esplicitamente CurrentCulture (il valore predefinito se l'argomento IFormatProvider è omesso), è essenzialmente la documentazione che dimostra che hai considerato quanto sopra e che la stringa generata deve usare la cultura dell'utente corrente. Ecco perché FxCop consiglia di specificare l'argomento IFormatProvider.

Altri suggerimenti

Se non si specifica IFormatProvider (o si passa equivalentemente null ) la maggior parte dei tipi di argomenti finirà per essere formattata in base a CultureInfo.CurrentCulture . La cosa interessante è che puoi specificare un IFormatProvider personalizzato che può ottenere il primo crack nella formattazione degli argomenti o sovrascrivere la cultura della formattazione a seconda dell'altro contesto.

Nota che CultureInfo.CurrentCulture influenza la formattazione degli argomenti, non la selezione delle risorse; la selezione delle risorse è controllata da CultureInfo.CurrentUICulture .

No, non è necessario specificare la cultura a meno che la stringa non contenga elementi specifici della cultura come separatori decimali, valuta, ecc., che devono essere resi in base alla cultura.

È particolarmente utile se ti interessa la localizzazione (globalizzazione) nella tua applicazione. Cioè, se vuoi che la tua app supporti più lingue e formati specifici di una cultura, dovresti usarla.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top