HOWTO · Csharp
Leia o número inteiro do console em C#
Existem 3 métodos principais que podem ser usados para ler um valor inteiro do console em C#, os métodos int.Parse(), int.TryParse() e os métodos Convert.ToInt32().
Nesta página
Para ler um inteiro do console em C#, primeiro leia uma linha com Console.ReadLine() e, em seguida, converta o texto. Use int.TryParse() quando a pessoa puder digitar um texto inesperado: esse método informa se a conversão funcionou e permite tratar entradas inválidas no fluxo normal do programa. Este guia compara int.Parse(), int.TryParse() e Convert.ToInt32() para entradas lidas linha por linha.
Como ler um inteiro do console com int.Parse()
int.Parse() converte uma string que contém um inteiro válido de 32 bits em um valor int. É uma opção concisa quando a entrada é confiável ou quando o código ao redor trata erros de conversão.
Este programa completo lê uma linha e imprime o valor convertido:
using System;
using System.IO;
class Program
{
static void Main()
{
Console.SetIn(new StringReader("42"));
Console.Write("Enter an integer: ");
string input = Console.ReadLine();
int value = int.Parse(input);
Console.WriteLine($"You entered: {value}");
}
}
Enter an integer: You entered: 42
Um texto que não representa um inteiro causa FormatException; um valor fora do intervalo de Int32 causa OverflowException. Em uma sessão real do console, Console.ReadLine() retorna null se o fluxo de entrada terminar antes que uma linha seja lida. Passar esse valor a int.Parse() causa ArgumentNullException; portanto, verifique se o valor é null primeiro quando o fim da entrada for possível. O exemplo usa um StringReader com 42 para manter o código autocontido.
Como ler um inteiro do console com int.TryParse()
int.TryParse() costuma ser a opção mais clara para entradas interativas, pois o sucesso da conversão faz parte do fluxo normal do programa. Ele retorna true e atribui o número convertido à variável out quando o texto representa um inteiro dentro do intervalo permitido. Caso contrário, retorna false e atribui o valor padrão (0) a essa variável; verifique o resultado booleano antes de usar o número.
using System;
using System.IO;
class Program
{
static void Main()
{
Console.SetIn(new StringReader("42"));
Console.Write("Enter an integer: ");
string input = Console.ReadLine();
int value;
if (int.TryParse(input, out value))
{
Console.WriteLine($"You entered: {value}");
}
else
{
Console.WriteLine("Enter a whole number within the Int32 range.");
}
}
}
Enter an integer: You entered: 42
Para texto não numérico, fim da entrada ou um valor fora do intervalo de int, TryParse retorna false, e o programa imprime a mensagem do ramo else. Você pode colocar a solicitação de entrada e a verificação da conversão em um loop para permitir uma nova tentativa; este exemplo responde uma vez e termina. Aqui, o StringReader fornece 42 para manter o código autocontido.
Como ler um inteiro do console com Convert.ToInt32()
Convert.ToInt32() é outra maneira de converter a linha retornada por Console.ReadLine(). Para texto numérico, ele produz o mesmo valor int que int.Parse(). Isso não torna qualquer texto seguro: texto não numérico pode causar FormatException, e um valor fora do intervalo de Int32 pode causar OverflowException. Uma string null é um caso especial: Convert.ToInt32((string)null) retorna 0, enquanto int.Parse(null) causa ArgumentNullException.
using System;
using System.IO;
class Program
{
static void Main()
{
Console.SetIn(new StringReader("42"));
Console.Write("Enter an integer: ");
string input = Console.ReadLine();
int value = Convert.ToInt32(input);
Console.WriteLine($"You entered: {value}");
}
}
Enter an integer: You entered: 42
Escolha int.TryParse() quando a entrada vier de uma pessoa e for útil ter um caminho normal de validação. Use int.Parse() ou Convert.ToInt32() quando o código chamador precisar tratar erros de conversão. Nestes exemplos de console, os três métodos começam com Console.ReadLine(); eles diferem na forma como lidam com os resultados da conversão e com valores especiais de entrada.