Me he estado preguntando sobre este durante bastante tiempo, pero parece que no puedo encontrar una respuesta definitiva. Siempre que puedo convertir un entero a una cadena utilizando el método ToString()
, y corro un análisis de código, aparece el siguiente aviso:Usando Int32.ToString() sin Formato e IFormatProvider. ¿Por qué recibo la advertencia CA1305?
CA1305: Microsoft.Globalization: Debido a que el comportamiento de 'int.ToString()' podría variar según la configuración regional actual del usuario , reemplace esta llamada en 'Class.Method()' con una llamada a 'int.ToString (IFormatProvider)'. Si el resultado de 'int.ToString ( IFormatProvider)' se mostrará en el usuario, especifique 'CultureInfo.CurrentCulture' como el parámetro 'IFormatProvider'. De lo contrario, si el resultado será almacenado y accedido por software, tales como cuando se conserva en el disco o en una base de datos, especifique 'CultureInfo.InvariantCulture'.
Ésta es la muy conocida advertencia CA1305 genérica, que consigue muestra cada vez que hagas una llamada a un método que tiene una sobrecarga que acepta un parámetro IFormatProvider
. Si bien esta es una advertencia muy correcta en casi todos los casos, no puedo pensar en nada que pueda salir mal al llamar al predeterminado ToString()
sin ningún formato o formato de proveedor en un número entero. Entonces, por favor, si alguien sabe algo que podría salir mal, ilumíname. Supongo que debe haber una buena razón para la sobrecarga IFormatProvider
.
Por cierto, I do siempre hace la llamada usando la sobrecarga IFormatProvider
, porque también parece tener un beneficio de rendimiento. Si alguien tiene comentarios perspicaces sobre esto, siéntete libre de compartirlos también.
ejemplo muy claro, gracias. No sabía que los signos negativos podrían diferir por cultura. –