Pregunta

¿Cómo cree que es realmente necesario proporcionar IFormatProvider en el método String.Format (cadena, objeto) ?

¿Es mejor escribir la variante completa

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

o simplemente

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

?

¿Fue útil?

Solución

En general, deseará usar InvariantCulture si la cadena que está generando debe persistir de manera independiente de la cultura del usuario actual (por ejemplo, en el registro o en un archivo).

Deberá utilizar CurrentCulture para las cadenas que se presentarán en la interfaz de usuario al usuario actual (formularios, informes).

Pueden surgir errores sutiles si usa CurrentCulture donde debería estar usando InvariantCulture: errores que solo salen a la luz cuando varios usuarios con diferentes culturas acceden 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 usted ha considerado lo anterior y que la cadena que se genera debe usar la cultura del usuario actual. Es por eso que FxCop recomienda que especifique el argumento IFormatProvider.

Otros consejos

Si no especifica el IFormatProvider (o pasa de manera equivalente null ), la mayoría de los tipos de argumentos eventualmente quedarán formateados de acuerdo con CultureInfo.CurrentCulture . Donde se pone interesante es que puede especificar un IFormatProvider personalizado que puede obtener la primera grieta al formatear los argumentos, o anular la cultura de formateo dependiendo de otro contexto.

Tenga en cuenta que CultureInfo.CurrentCulture afecta el formato del argumento, no la selección de recursos; la selección de recursos está controlada por CultureInfo.CurrentUICulture .

No, no necesita especificar la cultura a menos que su cadena contenga elementos específicos de la cultura, como separadores decimales, moneda, etc., que deben representarse según la cultura.

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 múltiples idiomas y formatos específicos de cultura, entonces debe usar eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top