HOWTO · Csharp
Como converter valores para int em C# com cast, Parse ou Convert
Em C#, escolha o método de conversão conforme a entrada: use o cast (int) para valores numéricos, int.Parse() para texto que representa um inteiro e Convert.ToInt32() para outros valores compatíveis. Cada método trata frações, valores nulos e entradas inválidas de maneira diferente.
Nesta página
Em C#, escolha o método de conversão conforme a entrada: use o cast (int) para um valor numérico, int.Parse() para texto que representa um inteiro e Convert.ToInt32() para valores compatíveis que precisam ser convertidos. Esses métodos tratam frações, valores nulos e entradas que não podem converter de maneiras diferentes.
Converter um valor numérico para int com o cast (int)
O cast numérico é a opção direta quando um valor já tem um tipo numérico. A expressão de cast converte o valor sem analisar texto. Para valores de ponto flutuante e decimais, a conversão para int trunca a parte fracionária em direção a zero: 42.9 torna-se 42, enquanto -42.9 torna-se -42. Este exemplo converte um valor numérico e imprime o resultado.
using System;
class Program
{
static void Main()
{
double value = 42.9;
int result = (int)value;
Console.WriteLine(result);
}
}
42
O cast se aplica a tipos numéricos compatíveis; ele não analisa uma string como "42". Quando um valor de ponto flutuante está fora do intervalo de int, uma conversão em contexto unchecked tem resultado não especificado. Em um contexto checked, uma conversão fora do intervalo lança OverflowException. Use checked((int)value) quando quiser que o estouro seja informado ou valide o intervalo antes de converter. Consulte o guia da Microsoft sobre casts e conversões de tipo.
Analisar uma string com um número inteiro usando int.Parse()
Use int.Parse() quando a entrada for uma string contendo um número inteiro, como texto lido de um formulário ou arquivo de configuração. O método retorna um int quando o texto segue o formato de inteiro aceito. O exemplo analisa uma string e imprime o número resultante.
using System;
class Program
{
static void Main()
{
string text = "42";
int result = int.Parse(text);
Console.WriteLine(result);
}
}
42
int.Parse() não converte texto arbitrário nem um objeto numérico: ele analisa uma string. Uma string nula causa ArgumentNullException; um texto que não representa um inteiro válido causa FormatException; e um valor fora do intervalo de int causa OverflowException. Para entradas do usuário que podem ser inválidas, use int.TryParse() e trate o resultado booleano, em vez de deixar uma falha de análise interromper a operação. As regras padrão de análise usam a cultura atual; informe uma cultura explícita quando o texto vier de uma fonte com formato numérico conhecido.
Converter valores compatíveis para int com Convert.ToInt32()
Convert.ToInt32() é útil quando a entrada pode ser um valor primitivo compatível, como um inteiro, um booleano, um número de ponto flutuante, um decimal ou uma string. O método não converte todos os tipos possíveis: as sobrecargas disponíveis e as implementações de IConvertible determinam o que pode ser convertido. Com uma string, ele analisa texto que representa um inteiro. Com valores de ponto flutuante ou decimais, arredonda para o inteiro mais próximo usando o arredondamento para o par nos pontos médios, ao contrário do truncamento feito por (int).
using System;
class Program
{
static void Main()
{
double value = 42.5;
int result = Convert.ToInt32(value);
Console.WriteLine(result);
}
}
42
Para esse ponto médio, o arredondamento para o par produz 42; o valor 43.5 produz 44. Convert.ToInt32() retorna 0 para uma referência nula, enquanto conversões incompatíveis, strings malformadas e valores fora do intervalo de int podem lançar exceções. Escolha esse método quando as regras de conversão forem adequadas à entrada; use int.Parse() quando a entrada for especificamente texto que representa um inteiro e um cast quando quiser truncar um valor numérico.