dynamique est une nouvelle fonctionnalité de FrameWork 4.0. L’émergence du dynamique a donné au C# les caractéristiques d’un type de langage faible. Le compilateur ne vérifie plus le type au moment de la compilation, et l’objet dynamique prend en charge par défaut toute fonctionnalité que vous souhaitez pendant la compilation. Par exemple, même si vous ne connaissez rien de l’objet retourné par la méthode GetDynamicObject, vous pouvez effectuer un appel de code comme celui-ci, et le compilateur ne signalera pas d’erreur :
En ce qui concerne l’utilisation correcte, il faut d’abord signaler une mauvaise utilisation :
Les gens utilisent souvent le mot-clé var pour comparer avec dynamique. En fait, var et dynamique sont deux concepts complètement différents et ne doivent pas du tout être comparés. Une fois compilé, le temps de compilation correspond automatiquement au type réel de la variable var et remplace la déclaration de la variable par le type réel, ce qui donne l’impression que nous déclarons le type réel lors de l’encodage. Après la compilation dynamique, il s’agit en réalité d’un type d’objet, mais le compilateur accordera un traitement spécial au type dynamique, de sorte qu’il n’effectue aucune vérification de type pendant la compilation, mais qu’il place la vérification de type à l’exécution.
Cela peut être vu dans la fenêtre éditeur de Visual Studio. Les variables déclarées comme vars supportent le « sens intelligent » car Visual Studio peut déduire le type réel de types de vars, tandis que les variables déclarées dynamiques ne supportent pas le « sens intelligent » car le compilateur ne connaît rien du type de son temps d’exécution. Utiliser Intelligent Sense pour les variables dynamiques invite « Cette action sera résolue à l’exécution ».
Le fait que la variable dynamique soit une variable objet peut être vérifié par le code IL, et le code IL ne sera pas affiché ici. Bien sûr, le compilateur gère aussi les déclarations dynamiques pour distinguer les variables objet directes.
dynamique est largement rendu en MSDN pour simplifier l’interopérabilité, et je pense que c’est sur cette base que certains développeurs sont mal compris : parce que beaucoup de développeurs ne savent pas utiliser du code comme COM+ et le développement secondaire OFFICE, ils ont un besoin urgent d’une raison d’application dynamique. Donc, dans le développement quotidien, je pense que la dynamique est précieuse :
Conversion de type La transition entre des instances de type dynamique et d’autres types d’instances est simple, et les développeurs peuvent facilement passer de comportements dynmiques à non dynamiques. Toute instance peut être implicitement convertie en instance de type dynamique, voir l’exemple suivant : dynamique d1 = 7 ; dynamique d2 = « une corde » ; dynamique d3 = System.DateTime.Today ; dynamique d4 = System.Diagnostics.Process.GetProcesses() ; Inversement, une conversion implicite peut être appliquée dynamiquement à toute expression de type dynamique. Et inversement, toute expression de dynamique de type peut aussi être implicitement convertie en d’autres types. int i = d1 ; string str = d2 ; DateHeure dt = d3 ; System.Diagnostics.Process[] procs = d4 ; Problème de surcharge avec les paramètres de type dynamique dans la méthode Si une méthode est appelée « DLR à l’exécution dynamique du langage L’exécution dynamique du langage est . NET Framework 4 Beta 1 est un nouvel ensemble d’API qui prennent en charge les types dynamiques en C# et implémente également des langages de programmation dynamiques comme IronPython et IronRuby. La dynamique simplifie les réflexions.
Auparavant, nous utilisions des réflexions comme ceci :
Nous avons maintenant une façon simplifiée d’écrire :
Nous pouvons être méprisants envers cette simplification, après tout, il semble que le code n’ait pas été beaucoup réduit, mais si l’on prend en compte les deux caractéristiques d’efficacité et de beauté, alors les avantages de la dynamique sont évidents. Le compilateur optimise la dynamique pour qu’elle soit bien plus rapide que l’efficacité de la réflexion non mise en cache. Si vous devez comparer, vous pouvez exécuter le code des deux ci-dessus (la partie appeler la méthode d’addition) pour 1000000 afin de tirer une conclusion.
|