La "tabla de funciones virtuales" o "tabla de métodos virtuales" es una lista de punteros de método que tiene cada clase. Contiene punteros a los métodos virtuales en la clase.
Cada instancia de una clase tiene un puntero a la tabla, que se usa cuando se llama a un método virtual desde la instancia. Esto se debe a que una llamada a un método virtual debe llamar al método asociado con la clase del objeto real, no a la clase de la referencia al objeto.
Si, por ejemplo, tiene una referencia de objeto a una cadena:
object obj = "asdf";
y llama al método ToString virtuales:
string text = obj.ToString();
se utilizará el método de String.ToString, no el objeto. Método ToString. Está utilizando la tabla de métodos virtuales de la clase String (a la que apunta el puntero en la instancia de cadena), no la tabla de métodos virtuales de la clase Object.
Entiendo correctamente que se crea una "tabla de métodos" para cualquier tipo. Entonces, ese tipo de valor también tiene una "tabla de métodos". Y una pregunta más ¿cómo se sabe que un tipo tiene una "tabla de métodos"? ¿La "tabla de métodos" está almacenada o referenciada en un objeto tipo? Pero el tipo de valor no tiene un puntero de tipo de objeto. :/Aquí hay una pregunta relacionada: http://stackoverflow.com/questions/35185528/does-a-value-type-keep-type-pointer-sync-root-static-fields-like-a-reference/35185851# 35185851 – Spirit
@Spirit: Sí, cada tipo tiene una tabla de métodos (al menos de alguna forma en algún momento). Como las llamadas para los tipos de valor no son virtuales, los métodos exactos se determinan en tiempo de compilación, por lo que no necesitan una tabla de métodos virtuales, para ellos solo debería existir en el ejecutable para propósitos de reflexión. No sé dónde se almacenan realmente las tablas de métodos, que dependería de la implementación, así que buscaría en el código fuente del marco para eso (sin embargo, esa parte de la implementación podría no ser pública). – Guffa
Gracias. Tu respuesta es muy clara. Finalmente encontré una discusión SO similar: http://stackoverflow.com/questions/926352/how-is-valuetype-gettype-able-to-determine-the-type-of-the-struct – Spirit