The dynamic type
C # 4.0 introduce un nuevo tipo estático llamado dinámico. Cuando usted tiene un objeto de tipo dinámico se puede "hacer las cosas a él" que se resuelven sólo en tiempo de ejecución:
dynamic d = GetDynamicObject(…);
d.M(7);
El compilador de C # le permite llamar a un método con cualquier nombre y cualquier argumento en el día, ya que es de tipo dinámico. En tiempo de ejecución del objeto real que se refiere a d será examinada para determinar lo que significa “call M with an int” en el.
La dinámica de tipo puede ser considerado como una versión especial del tipo de objeto, lo que indica que el objeto puede ser utilizado de forma dinámica. Es fácil optar dentro o fuera del comportamiento dinámico: cualquier objeto puede convertirse de forma implícita a la dinámica, "la creencia de suspensión" hasta el tiempo de ejecución. Por el contrario, las expresiones de tipo dinámico se puede convertir implícitamente al objeto, o de cualquier otro tipo, siempre y cuando exista una conversión en tiempo de ejecución:
dynamic d = 7; // compile-time implicit conversion
int i = d; // runtime implicit conversion
Dynamic operations
No sólo las llamadas a métodos, sino también el terreno y los accesos de la propiedad, las llamadas indizador y el operador, e incluso delegar en las invocaciones y las llamadas de constructor pueden ser enviados de forma dinámica:
dynamic d = GetDynamicObject(…);
d.M(7); // calling methods
d.f = d.P; // getting and settings fields and properties
d[“one”] = d[“two”]; // getting and setting through indexers
int i = d + 3; // calling operators
string s = d(5,7); // invoking as a delegate
var c = new C(d); // calling a constructor
El papel del compilador de C # aquí es simplemente para empaquetar la información necesaria acerca de "lo que se hace a D", de modo que el tiempo de ejecución puede recoger y determinar cuál es el significado exacto de que se le da una d objeto real. Piense en ello como diferir parte del trabajo del compilador para tiempo de ejecución.
El resultado de cualquier operación dinámica propia de la dinámica es el tipo, con dos excepciones:
• El tipo de una llamada al constructor dinámica es el tipo construido
• El tipo de conversión dinámica implícito o explícito es el tipo de destino de la conversión.
Saludos,
Luis Antonio Alfaro
follow me: http://twitter.com/lalfarod