Come determinare se una stringa rappresenta un valore numerico (Guida per programmatori C#)
Per determinare se una stringa è una rappresentazione valida di un tipo numerico specificato, usare il metodo statico TryParse
che viene implementato da tutti i tipi numerici primitivi e anche da tipi quali DateTime e IPAddress. L'esempio seguente illustra come determinare se "108" è un tipo int valido.
int i = 0;
string s = "108";
bool result = int.TryParse(s, out i); //i now = 108
Se la stringa contiene caratteri non numerici o se il valore numerico è o troppo grande o troppo piccolo per un determinato tipo specificato, TryParse
restituisce false e imposta il parametro out su zero. In caso contrario, restituisce true e imposta il parametro out sul valore numerico della stringa.
Nota
È possibile che una stringa contenga solo caratteri numeri e che non sia tuttavia valida per il tipo per il quale si usa il metodo TryParse
. Ad esempio, "256" non è un valore valido per byte
, ma lo è per int
. "98,6" non è un valore valido per int
ma è un valore decimal
valido.
Esempio
Gli esempi seguenti illustrano come usare TryParse
con rappresentazioni di stringa di valori long
, byte
e decimal
.
string numString = "1287543"; //"1287543.0" will return false for a long
long number1 = 0;
bool canConvert = long.TryParse(numString, out number1);
if (canConvert == true)
Console.WriteLine("number1 now = {0}", number1);
else
Console.WriteLine("numString is not a valid long");
byte number2 = 0;
numString = "255"; // A value of 256 will return false
canConvert = byte.TryParse(numString, out number2);
if (canConvert == true)
Console.WriteLine("number2 now = {0}", number2);
else
Console.WriteLine("numString is not a valid byte");
decimal number3 = 0;
numString = "27.3"; //"27" is also a valid decimal
canConvert = decimal.TryParse(numString, out number3);
if (canConvert == true)
Console.WriteLine("number3 now = {0}", number3);
else
Console.WriteLine("number3 is not a valid decimal");
Programmazione efficiente
I tipi numerici primitivi implementano anche il metodo statico Parse
, che genera un'eccezione se la stringa non è un numero valido. Il metodo TryParse
è in genere più efficiente in quanto restituisce false se il numero non è valido.
Sicurezza .NET
Usare sempre i metodi TryParse
o Parse
per convalidare l'input dell'utente da controlli, come caselle di testo e caselle combinate.