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
- Inférence du type des variables locales avec var
- Quand éviter var
- Le type dynamic
- Expressions new dont le type est déduit du contexte