Pergunta

As seguintes obras de código, mas eu não posso descobrir o que está acontecendo memória-wise. Onde e como é o valor struct t copiado?

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();
}
Foi útil?

Solução

Quando você lança a estrutura para uma interface, ele caixas do struct se é isso que você está perguntando? http://blogs.msdn.com/abhinaba/archive/2005 /10/05/477238.aspx

Outras dicas

Será encaixotado na declaração return t;. Neste ponto, o valor é copiado a partir da pilha para a pilha.

Quando você retornar de Marca () e atribuir a "ele", você está retornando uma cópia do "t" struct de dentro pilha de Marca ().

Este é então encaixotado em um objeto, e atribuído à interface "it". A interface, contém uma referência para a cópia "encaixotado" da estrutura, o que você usar para chamar Olá ().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top