Conversione di tipi di dati mediante System.Convert

Aggiornamento: novembre 2007

La classe System.Convert fornisce un insieme completo di metodi per le conversioni supportate. Mediante questa classe è possibile eseguire conversioni indipendenti dal linguaggio, applicabili cioè a tutti i linguaggi destinati al Common Language Runtime. Mentre in linguaggi diversi vengono utilizzate tecniche differenti per la conversione dei tipi di dati, con la classe Convert tutte le conversioni comuni possono essere effettuate in un formato generico. Questa classe esegue conversioni di ampliamento, conversioni di restrizione, così come conversioni verso tipi di dati non correlati. Sono supportate, ad esempio, conversioni da tipi String a tipi numerici, da tipi DateTime a tipi String e da tipi String a tipi Boolean. Per l'elenco completo delle conversioni disponibili, vedere l'elenco dei metodi nella classe Convert. La classe Convert esegue conversioni in modalità controllata e genera un'eccezione se la conversione non è supportata. L'eccezione generata spesso è OverflowException. Per l'elenco delle conversioni supportate, vedere la sezione Tabelle di conversione dei tipi.

È possibile passare il valore che si desidera convertire a uno dei metodi appropriati della classe Convert e inizializzare il valore restituito su una nuova variabile. Nel codice riportato di seguito, ad esempio, viene utilizzata la classe Convert per convertire un valore String in un valore Boolean.

Dim myString As String = "true"
Try
   Dim myBool As Boolean = Convert.ToBoolean(myString)
   Console.WriteLine(myBool)
Catch e As FormatException
   Console.WriteLine("{0} is not a Boolean value.", myString)
End Try   
' myBool has a value of True.
string myString = "true";
try
{
   bool myBool = Convert.ToBoolean(myString);
   Console.WriteLine(myBool);
}
catch (FormatException)
{
   Console.WriteLine("{0} is not a Boolean value.", myString);
}
// myBool has a value of True.

La classe Convert risulta utile anche nel caso in cui si desideri convertire una stringa in un valore numerico. Nell'esempio di codice seguente, una stringa contenente caratteri numerici viene convertita in un valore Int32.

Dim newString As String = "123456789"
Try
   Dim myInt As Integer = Convert.ToInt32(newString)
   Console.WriteLine(myInt)
Catch e As FormatException
   Console.WriteLine("{0} does not represent a number.", newString)   
Catch e As OverflowException
   Console.WriteLine("{0} is out of range of the integer type.", _
                     newString)
End Try
' myInt has a value of 123456789.
string newString = "123456789";
try
{
   int myInt = Convert.ToInt32(newString);
   Console.WriteLine(myInt);
}
catch (FormatException)
{
   Console.WriteLine("{0} does not represent a number.", 
                     newString);   
}
catch (OverflowException)
{
   Console.WriteLine("{0} is out of range of the integer type.", 
                     newString);
}
// myInt has a value of 123456789.

La classe Convert consente inoltre di eseguire una conversione di restrizione che non può essere eseguita in modo implicito nel linguaggio utilizzato. Nell'esempio seguente viene illustrata una conversione di restrizione dal valore Int64 al valore più piccolo Int32 mediante il metodo Convert.ToInt32.

Dim myInt64 As Int64 = 123456789
Try
   Dim myInt As Integer = Convert.ToInt32(myInt64)
   Console.WriteLine(myInt)
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0} to an integer.", _ 
                     myInt64)
End Try
' MyInt has a value of 123456789.
Int64 myInt64 = 123456789;
try
{
   int myInt = Convert.ToInt32(myInt64);
   Console.WriteLine(myInt);
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert {0} to a 32-bit integer.", 
                     myInt64);
}
// myInt has a value of 123456789.

In alcuni casi, quando si esegue una conversione di restrizione mediante la classe Convert, viene modificato il valore dell'elemento convertito. Nell'esempio di codice riportato di seguito un tipo Double viene convertito in un valore Int32. In questo caso, per completare la conversione il valore viene arrotondato da 42.72 a 43.

Dim myDouble As Double = 42.72
Try
   Dim myInt As Integer = Convert.ToInt32(myDouble)
   Console.WriteLine(myInt)
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0} to an integer.", myDouble)
End Try   
' MyInt has a value of 43.
Double myDouble = 42.72;
try 
{
   int myInt = Convert.ToInt32(myDouble);
   Console.WriteLine(myInt);
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert {0} to an integer.", myDouble);
}
// myInt has a value of 43.

Vedere anche

Concetti

Conversione esplicita

Altre risorse

Conversione di tipi