How to: Converter uma seqüência em um int (guia de programação C#)
Estes exemplos mostram algumas maneiras diferentes, você pode converter um seqüência de caracteres para um int. Tal conversão pode ser útil ao se obter entrada numérica de um argumento de linha de comando, por exemplo. Existem métodos de semelhantes para a conversão de strings para outros tipos numéricos, como float ou longo. A tabela abaixo relaciona alguns desses métodos.
Tipo numérico |
Método |
---|---|
decimal |
|
float |
|
double |
|
short |
|
long |
|
ushort |
|
uint |
|
ulong |
Exemplo
Este exemplo chama o ToInt32(String) método para converter a entrada seqüência de caracteres para um int . O programa captura as duas exceções mais comuns que podem ser geradas por este método. Se o número pode ser incrementado sem estourando o local de armazenamento inteiro, o programa adiciona 1 ao resultado e imprime a saída.
int numVal = -1;
bool repeat = true;
while (repeat == true)
{
Console.WriteLine("Enter a number between −2,147,483,648 and +2,147,483,647 (inclusive).");
string input = Console.ReadLine();
// ToInt32 can throw FormatException or OverflowException.
try
{
numVal = Convert.ToInt32(input);
}
catch (FormatException e)
{
Console.WriteLine("Input string is not a sequence of digits.");
}
catch (OverflowException e)
{
Console.WriteLine("The number cannot fit in an Int32.");
}
finally
{
if (numVal < Int32.MaxValue)
{
Console.WriteLine("The new value is {0}", numVal + 1);
}
else
{
Console.WriteLine("numVal cannot be incremented beyond its current value");
}
}
Console.WriteLine("Go again? Y/N");
string go = Console.ReadLine();
if (go == "Y" || go == "y")
{
repeat = true;
}
else
{
repeat = false;
}
}
// Keep the console open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
Outra maneira de converter um string para um int é por meio de Parse ou TryParse métodos da System.Int32 struct. O ToUInt32 usa o método Parse internamente. Se a seqüência de caracteres não estiver em um formato válido, Parse lança uma exceção, enquanto TryParse não não lança uma exceção, mas retorna false. Os exemplos a seguir demonstram chamadas bem-sucedidas e malsucedidas para Parse e TryParse.
int numVal = Int32.Parse("-105");
Console.WriteLine(numVal);
// Output: -105
// TryParse returns true if the conversion succeeded
// and stores the result in the specified variable.
int j;
bool result = Int32.TryParse("-105", out j);
if (true == result)
Console.WriteLine(j);
else
Console.WriteLine("String could not be parsed.");
// Output: -105
try
{
int m = Int32.Parse("abc");
}
catch (FormatException e)
{
Console.WriteLine(e.Message);
}
// Output: Input string was not in a correct format.
string inputString = "abc";
int numValue;
bool parsed = Int32.TryParse(inputString, out numValue);
if (!parsed)
Console.WriteLine("Int32.TryParse could not parse '{0}' to an int.\n", inputString);
// Output: Int32.TryParse could not parse 'abc' to an int.