La classe Convert e il parsing
Esegua il parsing e le conversioni con Convert e TryParse.
La classe Convert e il parsing è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.
Convertire le stringhe in numeri
L'input dell'utente arriva sotto forma di testo. Per eseguire calcoli con esso, è necessario convertire le stringhe in numeri. C# offre Convert, Parse e TryParse.
using System;
class Program
{
static void Main()
{
string input = "42";
int number = int.Parse(input);
Console.WriteLine(number + 8);
}
}int.Parse
int.Parse converte una stringa numerica in un int. Genera una FormatException se il testo non è un numero valido.
using System;
class Program
{
static void Main()
{
try
{
int n = int.Parse("abc");
Console.WriteLine(n);
}
catch (FormatException)
{
Console.WriteLine("Not a valid number");
}
}
}int.TryParse
int.TryParse evita le eccezioni: restituisce true in caso di successo e inserisce il risultato in un parametro out, oppure restituisce false in caso di errore.
using System;
class Program
{
static void Main()
{
if (int.TryParse("123", out int n))
Console.WriteLine("Parsed: " + n);
else
Console.WriteLine("Failed");
}
}TryParse per un input sicuro
TryParse è il metodo preferibile per gestire input non attendibile, perché il testo non valido viene gestito correttamente anziché causare un arresto anomalo.
using System;
class Program
{
static void Main()
{
string[] inputs = { "10", "oops", "30" };
int total = 0;
foreach (var s in inputs)
{
if (int.TryParse(s, out int v))
total += v;
}
Console.WriteLine("Total of valid: " + total);
}
}La classe Convert
La classe Convert converte molti tipi di base: Convert.ToInt32, Convert.ToDouble, Convert.ToBoolean e altri ancora.
using System;
class Program
{
static void Main()
{
int i = Convert.ToInt32("256");
double d = Convert.ToDouble("3.14");
bool b = Convert.ToBoolean("true");
Console.WriteLine(i + ", " + d + ", " + b);
}
}Convert gestisce null
A differenza di int.Parse, Convert.ToInt32(null) restituisce 0 invece di generare un'eccezione, il che può essere comodo o sorprendente.
using System;
class Program
{
static void Main()
{
string s = null;
int n = Convert.ToInt32(s); // returns 0
Console.WriteLine("Result: " + n);
}
}Convertire tra tipi numerici
Convert converte anche un tipo numerico in un altro e arrotonda, invece di troncare, quando converte valori con virgola mobile in interi.
using System;
class Program
{
static void Main()
{
double d = 7.6;
int cast = (int)d; // truncates -> 7
int converted = Convert.ToInt32(d); // rounds -> 8
Console.WriteLine("cast=" + cast + ", convert=" + converted);
}
}Analizzare altri tipi
La maggior parte dei tipi integrati dispone dei propri metodi Parse/TryParse: double.TryParse, bool.TryParse, DateTime.TryParse e così via.
using System;
class Program
{
static void Main()
{
bool okD = double.TryParse("2.5", out double d);
bool okB = bool.TryParse("True", out bool flag);
Console.WriteLine(okD + ":" + d + ", " + okB + ":" + flag);
}
}ToString per la conversione inversa
Per convertire nuovamente un numero in testo, chiami ToString(), facoltativamente con una stringa di formato.
using System;
class Program
{
static void Main()
{
int n = 255;
double price = 12.5;
Console.WriteLine(n.ToString());
Console.WriteLine(price.ToString("C")); // currency format
}
}Scegliere lo strumento corretto
Utilizzi TryParse per l'input dell'utente di cui non può fidarsi, Parse quando l'input è certamente valido e Convert per gestire i valori null o convertire molti tipi diversi.
using System;
class Program
{
static void Main()
{
string userInput = "55x";
int value = int.TryParse(userInput, out int v) ? v : -1;
Console.WriteLine(value == -1 ? "Invalid input" : "Got " + value);
}
}Mettere tutto insieme
Un flusso robusto per l'input esegue la convalida con TryParse, usa un valore predefinito in caso di errore, quindi esegue i calcoli in sicurezza.
using System;
class Program
{
static int ReadAge(string input)
{
if (int.TryParse(input, out int age) && age >= 0)
return age;
return 0; // safe default
}
static void Main()
{
Console.WriteLine("Age: " + ReadAge("28"));
Console.WriteLine("Age: " + ReadAge("bad"));
}
}Verifica rapida
Verifichi la comprensione dell'analisi e della conversione.
Riepilogo
Converta il testo in numeri con int.Parse (genera un'eccezione in caso di input errato), int.TryParse (è sicuro e restituisce un valore booleano più un valore out) oppure la classe Convert (gestisce i valori null, arrotonda i valori con virgola mobile e converte molti tipi). È preferibile usare TryParse per l'input non attendibile e ToString() per la conversione inversa.
using System;
class Program
{
static void Main()
{
if (int.TryParse("99", out int n))
Console.WriteLine("Value: " + n);
Console.WriteLine("Convert: " + Convert.ToInt32("7"));
}
}Domande Frequenti
La lezione «La classe Convert e il parsing» è gratuita?
Sì — il testo completo di «La classe Convert e il parsing» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.
Cosa imparerò in «La classe Convert e il parsing»?
Esegua il parsing e le conversioni con Convert e TryParse. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C# Academy?
Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «La classe Convert e il parsing»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C# Academy?
Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Tipi valore e tipi riferimento
- Boxing e unboxing
- Conversioni implicite ed esplicite
- La classe Convert e il parsing