Procedura: convertire una stringa in un numero (Guida per programmatori C#)
In questi esempi vengono illustrate alcune modalità diverse che è possibile utilizzare per convertire un valore string in un valore int.Tale conversione può essere utile quando si ottiene input numerico da un argomento della riga di comando, ad esempio.Sono disponibili metodi simili per la conversione di stringhe in altri tipi numerici, ad esempio float o long.Nella tabella riportata di seguito sono elencati alcuni di questi metodi.
Tipo numerico |
Metodo |
---|---|
decimal |
|
float |
|
double |
|
short |
|
int |
|
long |
|
ushort |
|
uint |
|
ulong |
Esempio
In questo esempio viene chiamato il metodo ToInt32(String) per convertire un tipo string di input in un tipo int.Il programma rileva le due eccezioni più comuni che possono essere generate con questo metodo, FormatException e OverflowException.Se è possibile incrementare il numero senza provocare l'overflow nella posizione di archiviazione di Integer, il programma aggiunge 1 al risultato e stampa l'output.
static void Main(string[] args)
{
int numVal = -1;
bool repeat = true;
while (repeat == true)
{
Console.WriteLine("Enter a number between −2,147,483,648 and +2,147,483,647 (inclusive).");
string input = Console.ReadLine();
// ToInt32 can throw FormatException or OverflowException.
try
{
numVal = Convert.ToInt32(input);
}
catch (FormatException e)
{
Console.WriteLine("Input string is not a sequence of digits.");
}
catch (OverflowException e)
{
Console.WriteLine("The number cannot fit in an Int32.");
}
finally
{
if (numVal < Int32.MaxValue)
{
Console.WriteLine("The new value is {0}", numVal + 1);
}
else
{
Console.WriteLine("numVal cannot be incremented beyond its current value");
}
}
Console.WriteLine("Go again? Y/N");
string go = Console.ReadLine();
if (go == "Y" || go == "y")
{
repeat = true;
}
else
{
repeat = false;
}
}
// Keep the console open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
// Sample Output:
// Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive).
// 473
// The new value is 474
// Go again? Y/N
// y
// Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive).
// 2147483647
// numVal cannot be incremented beyond its current value
// Go again? Y/N
// Y
// Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive).
// -1000
// The new value is -999
// Go again? Y/N
// n
// Press any key to exit.
Un altro modo per convertire un valore string in un valore int consiste nell'utilizzare il metodo Parse o TryParse della struttura System.Int32.Il metodo ToUInt32 utilizza il metodo Parse internamente.Se il formato della stringa non è valido, il metodo Parse genera un'eccezione, mentre il metodo TryParse non genera un'eccezione ma restituisce false.Negli esempi riportati di seguito vengono illustrate chiamate con esito positivo e negativo ai metodi Parse e TryParse.
int numVal = Int32.Parse("-105");
Console.WriteLine(numVal);
// Output: -105
// TryParse returns true if the conversion succeeded
// and stores the result in the specified variable.
int j;
bool result = Int32.TryParse("-105", out j);
if (true == result)
Console.WriteLine(j);
else
Console.WriteLine("String could not be parsed.");
// Output: -105
try
{
int m = Int32.Parse("abc");
}
catch (FormatException e)
{
Console.WriteLine(e.Message);
}
// Output: Input string was not in a correct format.
string inputString = "abc";
int numValue;
bool parsed = Int32.TryParse(inputString, out numValue);
if (!parsed)
Console.WriteLine("Int32.TryParse could not parse '{0}' to an int.\n", inputString);
// Output: Int32.TryParse could not parse 'abc' to an int.
Vedere anche
Attività
Procedura: determinare se una stringa rappresenta un valore numerico (Guida per programmatori C#)