Conversion de types de données à l'aide de System.Convert
Mise à jour : novembre 2007
La classe System.Convert fournit un ensemble complet de méthodes pour les conversions prises en charge. Elle constitue une façon, indépendante du langage, d'effectuer les conversions et est disponible pour tous les langages qui ciblent le Common Language Runtime. Alors que divers langages peuvent recourir à différentes techniques pour la conversion des types de données, la classe Convert assure que toutes les conversions communes sont disponibles dans un format générique. Cette classe effectue des conversions étendues et restrictives, ainsi que des conversions vers des types de données dissociés. Par exemple, les conversions des types String aux types numériques, des types DateTime aux types String et des types String aux types Boolean sont prises en charge. Pour obtenir la liste des conversions disponibles, consultez la liste de méthodes dans la classe Convert. La classe Convert effectue des conversions contrôlées et lève toujours une exception si la conversion n'est pas prise en charge. En règle générale, il s'agit d'une exception OverflowException. Pour obtenir la liste des conversions prises en charge, reportez-vous aux tableaux de conversion de types.
Vous pouvez passer la valeur que vous voulez convertir dans une des méthodes appropriées de la classe Convert et initialiser la valeur retournée dans une nouvelle variable. Par exemple, le code suivant utilise la classe Convert pour transformer une valeur String en valeur 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 est aussi utile si vous voulez convertir une chaîne en une valeur numérique. L'exemple de code suivant convertit une chaîne contenant des caractères numériques en une valeur 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 peut aussi être utilisée dans le cas d'une conversion restrictive qui ne peut pas être effectuée implicitement dans le langage particulier que vous utilisez. L'exemple de code suivant illustre une conversion restrictive d'un type Int64 à un type Int32 à l'aide de la méthode 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.
Quelquefois, une conversion restrictive effectuée avec la classe Convert change la valeur de l'élément converti. L'exemple de code suivant convertit une valeur de type Double en valeur de type Int32. Dans ce cas, la valeur est arrondie de 42.72 à 43 afin de compléter la conversion.
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.