Oii, Elvis!
No dia a dia da programação, você encontrará diversas formas de transformar um dado em outro, e entender qual escolher ajuda a evitar que o programa pare de funcionar inesperadamente.
Vou explicar as diferenças entre esses métodos de forma simples.
1. int.Parse()
Este método é direto. Ele pega uma string e tenta transformá-la em um número inteiro.
- Comportamento: Se o usuário digitar algo que não seja um número (como "abc") ou deixar o campo vazio, o programa apresentará um erro e será interrompido.
- Quando usar: Quando você tem certeza absoluta de que o dado recebido é um número válido e não será nulo.
2. Convert.ToInt32()
Este método funciona de forma parecida com o int.Parse(), mas ele é um pouco mais tolerante em um aspecto específico.
- Comportamento com Nulos: Se o valor passado for
null (nulo), o Convert.ToInt32() não quebra o programa; ele simplesmente retorna o valor 0. - Comportamento com textos: Se o usuário digitar letras ("abc"), ele ainda causará um erro, assim como o
int.Parse(). - A "Primeira Forma" que você citou: No exemplo
Convert.ToInt32(Convert.ToString(Console.ReadLine())), há um passo extra desnecessário, pois o Console.ReadLine() já entrega uma string. Basta usar Convert.ToInt32(Console.ReadLine()).
Uma dica extra: O int.TryParse()
Pra sistemas reais, onde não sabemos o que o usuário vai digitar no console, existe uma alternativa ainda mais segura que não foi mencionada nos exemplos acima: o int.TryParse().
Diferente dos outros dois, ele não interrompe o programa se houver erro. Ele tenta converter e devolve um valor verdadeiro (true) ou falso (false), permitindo que você trate o erro sem que a aplicação feche.
Console.Write("Digite uma opção: ");
if (int.TryParse(Console.ReadLine(), out int resultado))
{
// A conversão deu certo, o número está na variável 'resultado'
switch(resultado) { ... }
}
else
{
Console.WriteLine("Por favor, digite apenas números!");
}
A escolha entre os métodos depende do quanto você deseja proteger seu código contra entradas inesperadas. Para aprendizado, o int.Parse() é comum por ser mais curto, mas em projetos maiores, o Convert ou o TryParse costumam aparecer com mais frequência.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!