Como determinar se uma cadeia de caracteres representa um valor numérico (Guia de Programação em C#)

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. O exemplo a seguir mostra como determinar se "108" é um int válido.

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. Caso contrário, ele retornará true e definirá o parâmetro de saída como o valor numérico da cadeia de caracteres.

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. Por exemplo, "256" não é um valor válido para byte, mas é válido para int. “98,6” não é um valor válido para int, mas é válido para decimal.

Exemplo

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

Programação robusta

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. Geralmente, TryParse é mais eficiente, pois retornará false apenas se o número não for válido.

Segurança do .NET

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.

Confira também