Converti stringa in Int in C#

  1. Conversione da C# da stringa a int - Metodo Int16.Parse() / Int32.Parse() / Int64.Parse()
  2. Conversione da C# da stringa a int - Metodo Int16.TryParse() / Int32.TryParse() / Int64.TryParse()
  3. Conversione da C# da String a Int - Metodo Convert.ToInt16() / Convert.ToInt32() / Convert.ToInt64()

Ci sono alcune cose che devi considerare quando converti una stringa in int. In questo articolo, tratteremo alcuni dei metodi più semplici e consigliati per raggiungere questo obiettivo.

Conversione da C# da stringa a int - Metodo Int16.Parse() / Int32.Parse() / Int64.Parse()

Il metodo Parse() può essere utilizzato per convertire una rappresentazione di stringa di un numero in un intero con segno a 16/32/64 bit equivalente. Per scopi rappresentativi, copriremo solo le conversioni a 32 bit da qui in poi.

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);
    }
}

Produzione:

123

Un leggero svantaggio dell’utilizzo di questo metodo è che genera una FormatException nel caso in cui la stringa non sia una sequenza di cifre.

Sebbene Parse() ignori gli spazi bianchi all’inizio e alla fine della stringa, a parte questo, tutti i caratteri devono avere un valore numerico appropriato per una conversione corretta.

Raccomandiamo l’istruzione try...catch per gestire l’eccezione, come illustrato nei seguenti codici.

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");
        }
    }
}

Produzione:

Invalid String

Conversione da C# da stringa a int - Metodo Int16.TryParse() / Int32.TryParse() / Int64.TryParse()

Considerato come una valida alternativa al metodo Parse(), il metodo TryParse() non genera eccezioni in caso di fallimento. Invece, restituisce semplicemente False se la conversione fallisce, rendendo l’implementazione più semplice.

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");
    }
}

Produzione:

111

Conversione da C# da String a Int - Metodo Convert.ToInt16() / Convert.ToInt32() / Convert.ToInt64()

Il metodo Convert() accetta la variabile stringa come parametro e restituisce il valore numerico con segno a 16/32/64 bit equivalente. Simile al metodo Parse(), con questo metodo hai bisogno di un’istruzione try...catch per le eccezioni.

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");
        }
    }
}

Produzione:

123

Le eccezioni sono costose e generalmente non sono considerate una buona pratica da includere nel flusso del programma. Ma a volte potrebbero essere utili per estrarre informazioni importanti come la condizione di Overflow nel metodo Convert().

Tutti i metodi di cui sopra sono ugualmente efficaci e presentano alcuni compromessi quando si tratta di implementazione. Si consiglia di scegliere quello ottimale sulla base delle considerazioni che abbiamo esposto in questo articolo.

Articolo correlato - Csharp Integer

  • Int casuale in C#
  • Converti Float in Int in C#
  • Articolo correlato - Csharp String

  • Converti Double in Int in C#
  • C# Identifica se una stringa è un numero