Partager via


Vue d'ensemble des conversions

Mise à jour : novembre 2007

Chaque valeur a un type associé qui définit des attributs, tels que la quantité d'espace allouée à la valeur, la plage de valeurs possibles et les membres qu'il rend disponible. De nombreuses valeurs peuvent être exprimées sous forme de plusieurs types. Par exemple, la valeur 4 peut être exprimée sous forme d'un entier ou d'une valeur à virgule flottante. La conversion crée une valeur dans un nouveau type qui est équivalente à la valeur d'un ancien type, mais ne préserve pas nécessairement l'identité (ou la valeur exacte) des deux objets. Outre la prise en charge de la conversion implicite, le .NET Framework accepte la conversion explicite via la classe System.Convert qui fournit des méthodes de conversion de types.

Remarque :

Les langages individuels peuvent également permettre d'effectuer des conversions explicites. Par exemple, C# utilise des opérateurs de casting et Visual Basic fait appel à des fonctions de conversion implémentées par compilateur, telles que CType, CInt et DirectCast.

La conversion étendue et la conversion restrictive sont toutes deux prises en charge par le Common Language Runtime. Par exemple, la valeur représentée par un entier signé 32 bits peut être convertie en entier signé 64 bits. Voici un exemple de conversion étendue. La conversion inverse (de 64 bits à 32 bits) est un exemple de conversion restrictive. L'information n'est jamais perdue à la suite d'une conversion étendue (bien que la précision puisse l'être) ; en revanche, l'information peut être perdue au cours d'une conversion restrictive. Pour obtenir la liste de conversions étendues, consultez Tableaux de conversion de types.

L'exemple de code suivant illustre une conversion étendue dans laquelle la valeur Int32MyInt est convertie en valeur Int64. Cette conversion est effectuée implicitement, sans utilisation de la classe Convert ou d'un(e) autre opérateur ou méthode de conversion.

Dim MyInt As Integer = 1234567891
Dim MyBigInt As Long = MyInt
Console.WriteLine(MyBigInt)      ' Displays 1234567891
int MyInt = 1234567891;
long MyBigInt = MyInt;
Console.WriteLine(MyBigInt);           // Displays 1234567891

L'exemple de code suivant illustre une conversion restrictive dans laquelle la valeur Int64MyBigInt est convertie en valeur Int32. Cette conversion restrictive doit toujours être effectuée explicitement en C# et uniquement si Option Strict est défini dans Visual Basic. Dans cet exemple, la méthode ToInt32 est appelée pour effectuer la conversion.

Dim MyBigInt As Long = 1234567891
' exception handler: narrowing conversions can overflow
Try
   Dim MyInt As Integer = Convert.ToInt32(MyBigInt)
   Console.WriteLine(MyInt)         ' Displays 1234567891
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0} to an integer.", _ 
                     MyBigInt)      
End Try   
long MyBigInt = 1234567891;
// exception handler: narrowing conversions can overflow
try
{
   int MyInt = Convert.ToInt32(MyBigInt);
   Console.WriteLine(MyBigInt);        // Displays 1234567891
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert {0} to an integer.", 
                     MyBigInt);
}   

Voir aussi

Concepts

Tableaux de conversion de types

Conversion de types de données à l'aide de System.Convert

Conversion explicite

Référence

System.Convert

Autres ressources

Utilisation des types de base