2010-07-22 13 views
7

So che in C++ ci sono vpointer e vtable. La tabella delle funzioni virtuali è un elenco di puntatori del metodo per i metodi virtuali nella classe. Ogni istanza di una classe ha un puntatore alla tabella, che viene utilizzato quando chiamiamo un metodo virtuale dall'istanza.Come funzionano i metodi virtuali in C#?

Voglio sapere come è stato implementato in C#. Come so, il concetto di tavoli virtuali è lo stesso. Ma per quanto riguarda invece vpointer viene utilizzato GetType().

Gradirei quanti più dettagli possibile. Grazie.

risposta

7

Gli Vtables sono un possibile approccio in C++, sono non con lo standard C++. L'approccio utilizzato da .NET soddisfa chiaramente gli standard pubblicati per CLI e C#, ma i dettagli di implementazione non sono specificati (e potrebbero potenzialmente cambiare).

È possibile dedurre alcuni dettagli dal modo in cui funzionano le interfacce, i membri sottoposti a override e i membri "nuovi".

Perché vuoi sapere questo? Se hai un problema specifico, affermare il problema permetterà ad altri di affrontarlo direttamente.

+0

Non c'è alcun problema particolare da risolvere Voglio solo sapere come funziona/implementato internamente. – NDeveloper

Problemi correlati