Pregunta

El siguiente código funciona, pero no puedo entender lo que ocurre en la memoria. ¿Dónde y cómo se copia el valor de estructura t ?

interface ITest { void Hello(); }    

struct STest : ITest
{
    public void Hello() { Console.WriteLine("Hello"); }
}

static ITest Make()
{
    STest t = new STest();
    return t;
}

static void Main(string[] args)
{
    ITest it = Make();
    it.Hello();
}
¿Fue útil?

Solución

Cuando lanzas la estructura a una interfaz, encuadra la estructura si eso es lo que estás preguntando. http://blogs.msdn.com/abhinaba/archive/2005 /10/05/477238.aspx

Otros consejos

Se encajonará en la declaración return t; . En este punto, el valor se copia de la pila al montón.

Cuando regreses de Make (), y asigna a " it ", estás devolviendo una copia de " t " estructura de la pila dentro de Make ().

Esto se encuadra en un objeto y se asigna a la interfaz " it " ;. La interfaz contiene una referencia a la casilla " en caja " Copia de la estructura, que luego utilizas para llamar a Hello ().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top