CodeGym /Corsi /C# SELF /Conversione tra tipi di dati

Conversione tra tipi di dati

C# SELF
Livello 2 , Lezione 3
Disponibile

1. Perché serve la conversione dei tipi?

C# è un linguaggio fortemente tipizzato. Se il computer ha una “scatoletta” per un numero, provare a infilarci dentro del testo è come cercare di mettere una forchetta in una porta USB. Il compilatore non te la farà passare! 😡

Però, nella vita spesso lavoriamo contemporaneamente con diversi tipi di dati. Per esempio, hai una stringa che contiene un numero. Ed è proprio qui che serve la conversione (o trasformazione) dei tipi.

Vediamo un esempio. Supponiamo che tu voglia salvare il numero di utenti:

int a = 1;
int b = "2";
int c = "tre";

Il compilatore qui ti dirà subito: “Ma chi credi che io sia? Non so convertire automaticamente una stringa in un numero, senza il tuo aiuto non ce la faccio. Devi convertire la stringa in numero esplicitamente".

In C# ci sono diversi modi per convertire, ognuno con i suoi pro, contro e tipici trabocchetti.

2. Convertire int in string

Nel nostro lavoro spesso serve ottenere la rappresentazione testuale di un numero: ad esempio per mostrarlo a schermo, salvarlo su file, inviarlo in rete, unirlo a del testo ecc. In C# ci sono diversi modi per farlo, ognuno comodo in situazioni diverse.

Funzione ToString()

Questo è il metodo principale e più usato:

int number = 42;
string str = number.ToString();  // str == "42"

ToString() converte il numero in una stringa con il formato di default per quella struttura.

Interpolazione di stringa ($"...")

Un modo moderno, comodissimo per comporre stringhe con variabili:

int number = 42;
string str = $"Numero: {number}";

L’interpolazione di stringa richiama automaticamente ToString() per il valore inserito.

Puoi combinare più variabili e anche specificare il formato:

int number = 42;
string str = $"{number:D5}"; // "00042" — cinque cifre con zeri davanti

Concatenazione con stringa vuota

Un metodo vecchio, ma che funziona:

int number = 42;
string str = number + "";

Questo approccio è veloce per i casi semplici, ma meno chiaro per chi legge il codice.

3. Conversione implicita in stringa

Come già detto sopra, gli sviluppatori di C# hanno fatto in modo che tutte le variabili, oggetti, espressioni in C# possano essere convertite in string.

Anzi, questo succede automaticamente quando sommiamo una string con un altro tipo. Esempi:

int a = 5;
string name = "Anja" + a;            //  name contiene la stringa Anja5

int a = 5;
string city = a + "New York" + a;   //  city contiene la stringa 5New York5

int number = 10;
string code = "Yo";
string message = "Ciao! " + number + code; //  message contiene la stringa Ciao! 10Yo

In tutti e tre gli esempi abbiamo sommato tranquillamente variabili di tipo int e string, e il risultato è sempre stato di tipo string.

Importante! Non puoi fare operazioni aritmetiche con il tipo string. Anche se la stringa è fatta solo di numeri.

Esempi:

int a = 5;
string name = "1" + a;              //  name contiene la stringa 15

int a = 5;
string city = a + "9" + a;          //  city contiene la stringa 595

int number = 10;
string code = "10";
string message = "" + number + code; // message contiene la stringa 1010 

L’operazione di somma viene eseguita da sinistra a destra, quindi il risultato può essere un po’ inaspettato. Esempio:

int a = 5;
string name = a + a + "1" + a;      // name contiene la stringa 1015

Ordine di esecuzione: ((a + a) + "1") + a

4. Conversione di una stringa in numero

Per convertire un numero in stringa in C#, basta sommarlo a una stringa vuota:

string str = "" + numero;

Ma cosa fare se devi convertire una stringa in numero? Beh, non puoi convertire qualsiasi stringa in numero. Ma se la stringa è fatta solo di cifre, allora sì. Per questo il tipo int ha una funzione speciale Parse().

Il comando è così:


int x = int.Parse("stringa")
Conversione di una stringa in numero

Dove int x è la dichiarazione della variabile intera x, e stringa è il numero scritto come stringa (una stringa fatta di cifre).

Esempi:

string str = "123";
int number1 = int.Parse(str);        //  number1 contiene il numero 123;

int number2 = int.Parse("321");      //  number2 contiene il numero 321

int number3 = int.Parse("321" + 0);  //  number3 contiene il numero 3210

int number4 = "321"; //  Non si compila: la variabile è di tipo int, ma il valore è una stringa

Anche per i valori negativi funziona: la funzione int.Parse() è molto intelligente.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION