Como: determinar se uma cadeia de caracteres representa um valor numérico (Guia de Programação em C#)How to: Determine Whether a String Represents a Numeric Value (C# Programming Guide)

Para determinar se uma cadeia de caracteres é uma representação válida de um tipo numérico especificado, use o método estático TryParse implementado por todos os tipos numéricos primitivos e também por tipos como DateTime e 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. O exemplo a seguir mostra como determinar se "108" é um 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  

Se a cadeia de caracteres contiver caracteres não numéricos ou o valor numérico for muito grande ou muito pequeno para o tipo especificado, TryParse retornará false e definirá o parâmetro de saída como zero.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. Caso contrário, ele retornará true e definirá o parâmetro de saída como o valor numérico da cadeia de caracteres.Otherwise, it returns true and sets the out parameter to the numeric value of the string.

Observação

Uma cadeia de caracteres pode conter apenas caracteres numéricos e ainda não ser válida para o método TryParse do tipo usado.A string may contain only numeric characters and still not be valid for the type whose TryParse method that you use. Por exemplo, "256" não é um valor válido para byte, mas é válido para int.For example, "256" is not a valid value for byte but it is valid for int. “98,6” não é um valor válido para int, mas é válido para decimal."98.6" is not a valid value for int but it is a valid decimal.

ExemploExample

Os exemplos a seguir mostram como usar TryParse com representações de cadeia de caracteres dos valores long, byte e 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");            

Programação robustaRobust Programming

Os tipos numéricos primitivos também implementam o método estático Parse, que lançará uma exceção se a cadeia de caracteres não for um 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. Geralmente, TryParse é mais eficiente, pois retornará false apenas se o número não for válido.TryParse is generally more efficient because it just returns false if the number is not valid.

Segurança do .NET Framework.NET Framework Security

Sempre use os métodos TryParse ou Parse para validar entradas de usuário em controles como caixas de texto e caixas de combinação.Always use the TryParse or Parse methods to validate user input from controls such as text boxes and combo boxes.

Consulte tambémSee also