Mot clé C# dynamic

Permet d’introduire la notion de type dynamique en C#. Contrairement aux variables fortement typées, le type n’est pas connu à la compilation, il est déterminé à l’exécution en fonction de l’initialisation.

On peut utiliser dynamic pour des variables locales, dans la signature de fonctions et pour les membres de classe, en revanche on ne peut pas l’utiliser pour une classe ou pour un type d’opérateur.

L’intérêt de dynamic est de permettre d’utiliser un type qu’on ne connait pas à la compilation.

Comparaison avec "var"

Dynamic est différent de var car var sert juste à laisser le compilateur déterminer le type de la variable en fonction des initialisations mais le type reste déterminé à la compilation (et non à l’exécution comme pour dynamic).

Comparaison avec System.Object

Dynamic permet d’effectuer des opérations plus fines que system.object puisque on peut, par exemple, permettre d’utiliser des opérateurs en fonction du type de la variable:

class Program 
{ 
  static void Main(string[] args) 
  {
    // The dynamic variable gets the return  
    // value of a function call and outputs it. 

    dynamic x = DoubleIt(2); 
    Console.WriteLine(x); 

    // Stop and wait 
    Console.WriteLine(“Press any key”); 
    Console.ReadLine(); 
  } 

  // The function receives and returns a dynamic object  
  private static dynamic DoubleIt(dynamic p) 
  { 
    // Attempt to "double" the argument whatever  
    // that happens to produce 

    return p + p; 
  } 
}

Leave a Reply