Cómo: Determinar si una cadena representa un valor numérico (Guía de programación de C#)

Actualización: noviembre 2007

Para determinar si una cadena es una representación válida de un tipo numérico especificado, utilice el método estático TryParse implementado por todos los tipos numéricos primitivos y también por tipos como DateTime y IPAddress. En el ejemplo siguiente se muestra cómo determinar si "108" es un valor int válido.

  int i = 0; 
  string s = "108";
  bool result = int.TryParse(s, out i); //i now = 108

Si la cadena contiene caracteres no numéricos o el valor numérico es demasiado grande o demasiado pequeño para el tipo determinado que ha especificado, TryParse devuelve el valor false y establece el parámetro out en cero. De lo contrario, devuelve el valor true y establece el parámetro out en el valor numérico de la cadena.

Nota:

Una cadena puede contener solamente caracteres numéricos pero no ser válida para el tipo cuyo método TryParse se está utilizando. Por ejemplo, "256" no es un valor válido para byte pero sí para int. "98.6" no es un valor válido para int pero sí para decimal.

Ejemplo

En los ejemplos siguientes se muestra cómo utilizar TryParse con representaciones de cadena de los valores long, byte y decimal.

string numString = "1287543"; //"1287543.0" will return false for a long
long number1 = 0;
bool canConvert = long.TryParse(numString, out number1);
if (canConvert == true)
  Console.WriteLine("number1 now = {0}", number1);
else
  Console.WriteLine("numString is not a valid long");

byte number2 = 0;
numString = "255"; // A value of 256 will return false
canConvert = byte.TryParse(numString, out number2);
if (canConvert == true)
  Console.WriteLine("number2 now = {0}", number2);
else
  Console.WriteLine("numString is not a valid byte");

decimal number3 = 0;
numString = "27.3"; //"27" is also a valid decimal
canConvert = decimal.TryParse(numString, out number3);
if (canConvert == true)
  Console.WriteLine("number3 now = {0}", number3);
else
  Console.WriteLine("number3 is not a valid decimal");            

Programación eficaz

Los tipos numéricos primitivos también implementan el método estático Parse, que produce una excepción si la cadena no es un número válido. TryParse suele ser más eficaz porque solamente devuelve el valor false si el número no es válido.

Seguridad

Utilice siempre los métodos TryParse o Parse para validar los datos proporcionados por el usuario en controles como cuadros de texto y cuadros combinados.

Vea también

Tareas

Cómo: Convertir una matriz de bytes en un valor int (Guía de programación de C#)

Cómo: Convertir una cadena en un valor int (Guía de programación de C#)

Cómo: Convertir cadenas hexadecimales en tipos numéricos (Guía de programación de C#)

Conceptos

Analizar cadenas numéricas

Otros recursos

Convertir tipos

Aplicar formato a tipos