2008-10-28 15 views

Respuesta

6

Sí. Hay una gran diferencia entre var y dynamic.

var solo significa "dejar que el compilador infiera el tipo real de la variable".

dynamic es el tipo de la variable - por lo que cualquier lugar se puede especificar un tipo, puede especificar dynamic lugar, tal como lo entiendo. (Estoy seguro de que hay algunas excepciones a esto, pero esa es la idea básica.)

EDIT: Chris Burrow first blog entry on dynamic (hay una ya second one; esperar más pronto) da una clase de ejemplo que utiliza dynamic por todo el lugar.

+0

Realmente dinámico no es * realmente * el tipo. Más bien dice, no determine el tipo real hasta el tiempo de ejecución. Puede usar "es" en tipos dinámicos y descubrir lo que realmente son. –

+2

Pero dinámico es el tipo de * variable * aún, del mismo modo que si declara "objeto x = new MemoryStream()", entonces el tipo de la variable es "objeto" mientras que el tipo del objeto se refiere al valor de la variable a es "MemoryStream". –

+0

Estoy tratando de encontrar el lugar donde leí MS iluminado que explicaba lo que estaba tratando de explicar. No puedo encontrarlo de nuevo He leído demasiada información de PDC en los últimos dos días. –

2

Este fragmento de código del libro "CLR a través de C#, 3ª Ed" muestra dinámica en acción:

using System; 
using System.Dynamic; 
static class DyanmicDemo 
{ 
    public static void Main() { 
    for(Int32 demo =0; demo < 2; demo++) { 
    dynamic arg = (demo == 0) ? (dynamic) 5 : (dynamic) "A"; 
    dynamic result = Plus(arg); 
    M(result); 
    } 
} 
    private static dynamic Plus(dynamic arg) { return arg + arg; } 
    private static void M(Int32 n) { Console.WriteLine("M(Int32): " + n); } 
    private static void M(String s) { Console.WriteLine("M(String): " + s); } 
} 

Cuando ejecuto principal, me sale el siguiente resultado:

M (Int32): 10

M (Cadena): AA

Cuestiones relacionadas