Procedimiento Determinar si una cadena representa un valor numérico (Guía de programación de C#)How to: Determine Whether a String Represents a Numeric Value (C# Programming Guide)

Para determinar si una cadena es una representación válida de un tipo numérico especificado, use el método estático TryParse implementado por todos los tipos numéricos primitivos y también por tipos como DateTime y IPAddress.To determine whether a string is a valid representation of a specified numeric type, use the static TryParse method that is implemented by all primitive numeric types and also by types such as DateTime and IPAddress. En el ejemplo siguiente se muestra cómo determinar si "108" es un valor int válido.The following example shows how to determine whether "108" is a valid int.

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.If the string contains nonnumeric characters or the numeric value is too large or too small for the particular type you have specified, TryParse returns false and sets the out parameter to zero. De lo contrario, devuelve el valor true y establece el parámetro out en el valor numérico de la cadena.Otherwise, it returns true and sets the out parameter to the numeric value of the string.

Nota

Una cadena puede contener solamente caracteres numéricos pero no ser válida para el tipo cuyo método TryParse se está usando.A string may contain only numeric characters and still not be valid for the type whose TryParse method that you use. Por ejemplo, "256" no es un valor válido para byte pero sí para int.For example, "256" is not a valid value for byte but it is valid for int. "98,6" no es un valor válido para int pero sí para decimal."98.6" is not a valid value for int but it is a valid decimal.

EjemploExample

En los ejemplos siguientes se muestra cómo usar TryParse con representaciones de cadena de los valores long, byte y decimal.The following examples show how to use TryParse with string representations of long, byte, and decimal values.


   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 sólidaRobust Programming

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.Primitive numeric types also implement the Parse static method, which throws an exception if the string is not a valid number. TryParse es, en general, más eficaz porque simplemente devuelve false si el número no es válido.TryParse is generally more efficient because it just returns false if the number is not valid.

Seguridad de .NET Framework.NET Framework Security

Use siempre los métodos TryParse o Parse para validar los datos proporcionados por el usuario en controles como cuadros de texto y cuadros combinados.Always use the TryParse or Parse methods to validate user input from controls such as text boxes and combo boxes.

Vea tambiénSee also