c# - miles - ¿Es realmente necesario CultureInfo.CurrentCulture en String.Format()?
string format separador miles c# (4)
¿Cómo crees que es realmente necesario proporcionar IFormatProvider
en el método String.Format(string, object)
?
¿Es mejor escribir la variante completa?
String.Format(CultureInfo.CurrentCulture, "String is {0}", str);
o solo
String.Format("String is {0}", str);
?
En general, querrá usar InvariantCulture si la cadena que está generando debe persistir de forma independiente de la cultura del usuario actual (por ejemplo, en el registro o en un archivo).
Deseará usar CurrentCulture para cadenas que se presentarán en la interfaz de usuario para el usuario actual (formularios, informes).
Pueden surgir errores sutiles si usa CurrentCulture donde debería usar InvariantCulture: errores que solo salen a la luz cuando tiene múltiples usuarios con culturas diferentes accediendo a la misma entrada o archivo de registro, o si un usuario cambia su cultura predeterminada.
Especificar explícitamente CurrentCulture (el valor predeterminado si se omite el argumento IFormatProvider), es esencialmente documentación que demuestra que ha considerado lo anterior y que la cadena que se está generando debe usar la cultura del usuario actual. Es por eso que FxCop recomienda que debe especificar el argumento IFormatProvider.
Es especialmente útil si le importa la localización (Globalización) en su aplicación. Es decir, si desea que su aplicación sea compatible con varios idiomas y formatos específicos de cultura, entonces debe usar eso.
No, no es necesario que especifique la referencia cultural a menos que la cadena contenga elementos específicos de la cultura, como separadores decimales, moneda, etc., que deban representarse según la cultura.
Si no especifica el IFormatProvider
(o equivalentemente pase null
), la mayoría de los tipos de argumentos eventualmente pasarán a ser formateados de acuerdo con CultureInfo.CurrentCulture
. Lo interesante es que puede especificar un IFormatProvider
personalizado que pueda obtener la primera grieta en formatear los argumentos, o anular la cultura de formateo dependiendo de otro contexto.
Tenga en cuenta que CultureInfo.CurrentCulture
afecta el formato de los argumentos, no la selección de recursos; la selección de recursos está controlada por CultureInfo.CurrentUICulture
.