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

24. April 2009 22:44 by Oscar.SS in Lenguajes  //  Tags:   //   Comments (1)

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.

Suponamos que dejamos que un usuario introduzca un valor númerico por pantalla y queremos realizar calculos 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 pasádo 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);
}

 

Comments (1) -

Alejadro perez
Alejadro perez
8/5/2013 10:32:24 PM #

Muchas gracias por el aporte. Exitos

Recent Comments

Comment RSS

Month List