CA1305: Int.Parse (cadena)
-
13-09-2019 - |
Pregunta
Estoy recibiendo una advertencia de CA1305.
Microsoft.globalization: Debido a que el comportamiento de 'int.parse (string)' podría variar según la configuración local del usuario actual, reemplace esta llamada en '_default.calculateImageButton_Click (Object, ImageClicKeVeVeVegs)' con una llamada a 'INT.PARSE (String (String String , IformatProvider) '. Si el resultado de 'Int.Parse (String, iformatProvider)' se mostrará al usuario, especifique 'culturinfo.CurrentCulture' como el parámetro 'iformatProvider'. De lo contrario, si el resultado será almacenado y accedido por software, como cuando se persiste en disco o a una base de datos, especifique 'CultureInfo.InvariantCulture'.
¿Qué puede salir mal exactamente si omito especificar la cultura al analizar INT32?
Solución
Significa que cuando lea "1,234" de un archivo de datos o registro de la base de datos, intente lanzarlo a un int a través de PARSE, obtendrá 1234 en Estados Unidos y 1 en Alemania. La advertencia brinda un buen consejo: si está interactuando con el usuario, especifique CurrentCulture (¡gracias Andrew!), Y si está interactuando con un sistema de archivos o una base de datos (¡o cualquier cosa! Usuario), use InvariantCulture
Otros consejos
Si está analizando un entero, puede tener mil separadores, lo que puede ser "," o ". Dependiendo del lugar.