Procedura: 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, utilizzare il metodo TryParse statico implementato da tutti i tipi numerici primitivi e anche da tipi come DateTime e IPAddress.Nell'esempio seguente viene illustrato come determinare se "108" è un 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 il valore numerico è troppo grande o troppo piccolo per il particolare 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]

Una stringa può contenere solo caratteri numerici e tuttavia non essere valida per il tipo di cui si utilizza il metodo TryParse.Ad esempio, "256" non è un valore valido per byte, ma è valido per int. 98,6" non è un valore valido per int, ma è valido per decimal.

Esempio

Negli esempi seguenti è illustrato come utilizzare 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.TryParse è in genere più efficace poiché restituisce semplicemente false se il numero non è valido.

Sicurezza

Utilizzare sempre i metodi TryParse o Parse per convalidare l'input dell'utente da controlli quali caselle di testo e caselle combinate.

Vedere anche

Attività

Procedura: convertire una matrice di byte in un Integer (Guida per programmatori C#)

Procedura: convertire una stringa in un numero (Guida per programmatori C#)

Procedura: eseguire la conversione tra stringhe esadecimali e tipi numerici (Guida per programmatori C#)

Concetti

Analisi delle stringhe numeriche

Altre risorse

Formattazione dei tipi di dati