How to: Determinar se uma seqüência de caracteres representa um numérico Valor (guia de programação C#)
Para determinar se uma seqüência de caracteres é uma representação válida de um tipo numérico especificado, use o estática TryParse método que é implementado por todos os tipos primitivos de numéricos e também por tipos como DateTime e IPAddress. O exemplo a seguir mostra como determinar se a "108" é um int.
int i = 0;
string s = "108";
bool result = int.TryParse(s, out i); //i now = 108
Se a seqüência contém caracteres não numéricos ou o valor numérico é muito grande ou muito pequeno para o tipo específico que você especificou, TryParse retorna false e define o parâmetro de saída para zero. Caso contrário, retorna true e define o parâmetro de saída para o valor numérico da seqüência de caracteres.
Observação |
---|
Uma seqüência pode conter somente caracteres numéricos e ainda não seja válido para o tipo cuja TryParse método que você utiliza. 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 decimal. |
Exemplo
Os exemplos a seguir mostram como usar TryParse com representações de strings de long, byte, e decimal valores.
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
Tipos de primitivo numérico também implementar a Parse método estático, que lança uma exceção se a seqüência de caracteres não é um válido número. TryParseé geralmente mais eficiente porque ele simplesmente retorna false se o número não é válido.
Segurança
Sempre use o TryParse ou Parse métodos para validar a entrada do usuário de controles como caixas de texto e caixas de combinação.
Consulte também
Tarefas
How to: Converter um byte Array para um int (guia de programação C#)
How to: Converter uma seqüência em um int (guia de programação C#)
How to: Converter entre cadeias de caracteres Hexadecimal e tipos numéricos (C# guia de programação)