Método Parse() o los métodos de la clase Convert




Vamos arrojar un poco de luz sobre las diferencias entre utilizar el método Parse() de las estructuras de tipos de .NET o utilizar los métodos de la clase System.Convert. En realidad parece que hacen lo mismo pero existe una gran diferencia.Supongamos que dejamos que un usuario introduzca un valor numérico por pantalla y queremos realizar cálculos con ese valor. Por lo tanto, el valor introducido por el usuario será del tipo System.String y deberemos convertirlo a un tipo de valor numérico, por ejemplo System.Int32.
En definitiva queremos saber que diferencia hay entre ejecutar estas dos lineas de código:
int valorA Convert.ToInt32(valorUsuario);
int valorB Int32.Parse(valorUsuario);
Cuando utilizamos la segunda opción, el método Parse(), si el usuario no ha introducido ningún valor (null) recibiremos una excepción del tipo System.FormatException. Lo que indica que el formato del argumento no cumple las especificaciones del parámetro del método invocado.
En cambio, cuando utilizamos la primera opción, los métodos de la clase System.Convert, si el valor pasado al método es null, el método ConovertToInt32() devolverá un valor numérico, devolverá cero en todos los casos que el valor de entrada sea null.
Utilizando la herramienta Reflector podemos ver las diferencias de código que hay entre estas dos formas de convertir los tipos de .NET.

     
    Convert.ToInt32();

public static int ToInt32(string value)
{
     if (value == null)
     {
          return 0;
     }
     return int.Parse(value, CultureInfo.CurrentCulture);
}
 

    Int32.Parse();

public static int Parse(string s)
{
     return Number.ParseInt32(s, NumberStyles.Integer, NumberFormatInfo.CurrentInfo);
}
Espero que lo disfruten, compartan y comenten. ;)

"Si se puede imaginar... se puede programar."

No hay comentarios:

Publicar un comentario

Google