0Pricing
C# Academy · Leçon

Le type dynamic

Différez la résolution du type à l’exécution avec dynamic.

Le type dynamic est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.

Qu’est-ce que dynamic ?

Le type dynamic contourne la vérification du typage à la compilation. L’accès aux membres et les opérations sont résolus au moment de l’exécution.

using System;

class Program {
    static void Main() {
        dynamic value = 10;
        Console.WriteLine(value + 5);
    }
}

Réaffecter des types différents

Une variable dynamic peut contenir n’importe quel type et même changer de type au fil des affectations.

using System;

class Program {
    static void Main() {
        dynamic x = 1;
        Console.WriteLine(x);
        x = "now a string";
        Console.WriteLine(x);
    }
}

Liaison à l’exécution

Avec dynamic, le compilateur vous fait confiance. Les recherches de méthodes et de propriétés ont lieu lorsque la ligne s’exécute, et non lorsqu’elle est compilée.

using System;

class Program {
    static void Main() {
        dynamic text = "hello";
        Console.WriteLine(text.ToUpper());
    }
}

Les erreurs apparaissent à l’exécution

Comme la vérification est différée, un membre incorrect déclenche une RuntimeBinderException à l’exécution au lieu d’empêcher la compilation.

using System;
using Microsoft.CSharp.RuntimeBinder;

class Program {
    static void Main() {
        dynamic n = 5;
        try {
            n.NoSuchMethod();
        } catch (RuntimeBinderException) {
            Console.WriteLine("No such member");
        }
    }
}

dynamic et var

var est fixe au moment de la compilation ; dynamic reste flexible à l’exécution. Ils se ressemblent, mais leur comportement est très différent.

using System;

class Program {
    static void Main() {
        var fixedType = 10;
        dynamic flexible = 10;
        flexible = "changed";
        Console.WriteLine(fixedType + " " + flexible);
    }
}

Arithmétique avec dynamic

Les opérateurs appliqués à dynamic sont résolus à l’exécution en fonction des valeurs réellement utilisées.

using System;

class Program {
    static void Main() {
        dynamic a = 3;
        dynamic b = 4;
        Console.WriteLine(a * b);
    }
}

Valeurs de retour dynamic

Une méthode peut renvoyer dynamic lorsque le type varie réellement, mais les appelants perdent l’aide du compilateur lors de la compilation.

using System;

class Program {
    static dynamic GetValue(bool flag) {
        return flag ? (dynamic)42 : "text";
    }
    static void Main() {
        Console.WriteLine(GetValue(true));
        Console.WriteLine(GetValue(false));
    }
}

Cas d’utilisation de dynamic

dynamic est utile pour l’interopérabilité avec COM, les données semblables à JSON et l’appel de code dont la structure reste inconnue jusqu’à l’exécution.

using System;

class Program {
    static void Main() {
        dynamic data = 100;
        data += 1;
        Console.WriteLine(data);
    }
}

Coût en performances

La liaison à l’exécution entraîne une surcharge. Pour les boucles serrées ou le code simple, préférez les types statiques pour gagner en rapidité et en sûreté.

using System;

class Program {
    static void Main() {
        int fast = 0;
        for (int i = 0; i < 5; i++) fast += i;
        Console.WriteLine(fast);
    }
}

Pas d’IntelliSense

Les éditeurs ne peuvent pas suggérer de membres pour un objet dynamic, puisque son type reste inconnu jusqu’à l’exécution. Cela ralentit le développement.

using System;

class Program {
    static void Main() {
        dynamic s = "Code";
        Console.WriteLine(s.Length);
    }
}

À utiliser avec parcimonie

N’utilisez dynamic que lorsque le typage statique ne peut réellement pas exprimer le scénario ; sinon, préférez les types concrets.

using System;

class Program {
    static void Main() {
        dynamic flexible = 7;
        Console.WriteLine(flexible.GetType().Name);
    }
}

Vérification rapide

Testez votre compréhension de dynamic.

Récapitulatif

dynamic désactive la vérification du typage à la compilation et résout les membres à l’exécution. Une variable dynamic peut donc changer de type et les appels invalides déclenchent une RuntimeBinderException.

Contrairement à var, qui est fixe au moment de la compilation, dynamic est flexible, mais coûte en performances, ne bénéficie pas d’IntelliSense et doit être utilisé avec parcimonie.

Questions Fréquemment Posées

La leçon « Le type dynamic » est-elle gratuite ?

Oui — le texte complet de « Le type dynamic » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Le type dynamic » ?

Différez la résolution du type à l’exécution avec dynamic. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Le type dynamic » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Inférence du type des variables locales avec var
  2. Quand éviter var
  3. Le type dynamic
  4. Expressions new dont le type est déduit du contexte
← Retour à C# Academy