Como converter String para Int em C#

  1. C# string a int Conversão - Int16.Parse() / Int32.Parse() / Int64.Parse() Método
  2. C# string a int Conversão - Int16.TryParse() / Int32.TryParse() / Int64.TryParse() Método
  3. Conversão de C# String para Int - Método Convert.ToInt16() / Convert.ToInt32() / Convert.ToInt64()

Há certas coisas que você deve considerar ao converter uma string para int. Neste artigo, cobriremos alguns dos métodos mais fáceis e recomendados para conseguir isto.

C# string a int Conversão - Int16.Parse() / Int32.Parse() / Int64.Parse() Método

O método Parse() pode ser utilizado para converter uma representação em string de um número para um inteiro equivalente a 16/32/64 bit assinado. Para fins de representação, cobriremos apenas as conversões de 32 bits a partir daqui.

using System;

public class Instance{
    public static void Main(){
        string str_var = "123";
        int num_var = Int32.Parse(str_var);
        System.Console.WriteLine(num_var);
    }
}

Resultado:

123

Uma ligeira desvantagem da utilização deste método é que ele lança uma FormatException no caso de a string não ser uma seqüência de dígitos.

Embora Parse() ignore os espaços brancos no início e no final da string, além disso, todos os caracteres devem ser de valor numérico apropriado para uma conversão bem sucedida.

Recomendamos a expressão try...catch para lidar com a exceção, como descrito nos códigos a seguir.

using System;

public class Instance{
    public static void Main(){
        string str_var = "abc";
        try
        {
            int num_var = Int32.Parse(str_var);
            System.Console.WriteLine(num_var);
        }
        catch (FormatException)
        {
            System.Console.WriteLine("Invalid String");
        }
    }
}

Resultado:

Invalid String

C# string a int Conversão - Int16.TryParse() / Int32.TryParse() / Int64.TryParse() Método

Considerado como uma alternativa adequada ao método Parse(), o método TryParse() não lança uma exceção em caso de falha. Em vez disso, ele apenas devolve Falso se a conversão falhar, tornando a implementação mais simples.

using System;

public class Instance{
    public static void Main(){
        bool result;
        string str_var = "111";
        int num_var;
        result = Int32.TryParse(str_var, out num_var);
        if(result)
            System.Console.WriteLine(num_var);
        else
            System.Console.WriteLine("Invalid String");
    }
}

Resultado:

111

Conversão de C# String para Int - Método Convert.ToInt16() / Convert.ToInt32() / Convert.ToInt64()

O método Convert() toma a variável string como parâmetro e retorna o valor numérico equivalente a 16/32/64 bit assinado. Semelhante ao método Parse(), com este método você precisa de uma declaração de try...catch para exceções.

using System;

public class Instance{
    public static void Main(){
        string str_var = "123";
        try
        {
            int num_var = Convert.ToInt32(str_var);
            System.Console.WriteLine(num_var);
        }
        catch (FormatException)
        {
            Console.WriteLine("Invalid String");
        }
        catch (OverflowException)
        {
            Console.WriteLine("The string cannot fit in 32 bit value");
        }
    }
}

Resultado:

123

As exceções são caras e não são consideradas uma boa prática geralmente a ser incluída no fluxo do programa. Mas às vezes elas podem ser úteis para extrair informações importantes como a condição de transbordo no método Convert().

Todos os métodos acima são igualmente eficazes e têm certos trade-offs quando se trata de implementação. Recomendamos escolher o ótimo com base em considerações que expusemos neste artigo.

Artigo relacionado - Csharp String

  • Como converter uma string para flutuar em C#