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;
}
}