Quels sont les types de conversions de types en C#?
sobes.tech IA
Réponse de l'IA
En C#, il existe deux principaux types de conversion de types:
-
Conversion explicite (Explicit conversion) : Nécessite l'utilisation de l'opérateur de conversion
(type). Utilisé lorsque le compilateur ne peut pas effectuer la conversion en toute sécurité automatiquement, par exemple lors de la conversion d'une classe de base à une classe dérivée ou d'un type avec une précision plus grande à un type avec une précision moindre (par exemple,doubleàint). Cela peut entraîner une perte de données ou une erreur à l'exécution (InvalidCastException).// Conversion explicite de double à int double d = 123.45; int i = (int)d; // i sera égal à 123 // Conversion explicite d'un objet à un type spécifique object obj = "Hello"; string s = (string)obj; // s sera égal à "Hello" -
Conversion implicite (Implicit conversion) : Effectuée automatiquement par le compilateur lorsque la conversion est connue et sûre, c'est-à-dire sans perte de données. Par exemple, convertir de
intàdouble.// Conversion implicite de int à double int x = 10; double y = x; // y sera égal à 10.0 // Conversion implicite d'une classe dérivée à une classe de base class Base {} class Derived : Base {} Derived derivedObj = new Derived(); Base baseObj = derivedObj; // Conversion implicite
De plus, il existe les opérateurs as et is, qui sont également liés à la conversion de types, mais avec des caractéristiques spécifiques :
-
Opérateur
as: Effectue la conversion de type si possible, sinon retournenull. Ne génère pas d'exception InvalidCastException. Utilisé uniquement avec des types de référence et des types Nullable.// Utilisation de l'opérateur as object obj2 = "World"; string s2 = obj2 as string; // s2 sera égal à "World" object obj3 = 123; string s3 = obj3 as string; // s3 sera null -
Opérateur
is: Vérifie si un objet est une instance d'un type spécifique ou d'un type dérivé. Retournetrueoufalse. Dans les dernières versions de C#, il peut être utilisé avec des motifs (pattern matching) pour vérifier et faire une conversion en même temps.// Utilisation de l'opérateur is pour vérifier le type object obj4 = "Example"; if (obj4 is string) { // Actions si l'objet est une chaîne } // Utilisation de is avec motif (Pattern matching) if (obj4 is string str) { // str est accessible ici en tant que chaîne }