He descubierto que si ejecuto las siguientes líneas de código.¿Por qué llamar a algunas funciones de la clase Object, en una instancia de tipo primitivo, necesita boxeo?
int i = 7;
i.GetHashCode(); //where GetHashCode() is the derived
//function from System.Object
Sin el boxeo está hecho, pero si llamo i.GetType()
(otra función derivada de System.Object
) en lugar de GetHashCode()
, se requerirá un boxeo para llamar GetType()
, ¿Por qué no es posible llamar GetType()
en la instancia de tipo primitivo directamente , sin boxeo, mientras que es posible llamar al GetHashCode()
sin boxeo?
me sorprende que 'GetType' se llama en absoluto. Como C# está tipado estáticamente y una * variable de tipo de valor * no puede contener nada más que objetos del tipo de valor, el tipo es determinable en el tipo de compilación (es 'typeof (int)'). Entonces, ¿por qué emitir una llamada en tiempo de ejecución? –
Correcto, pero la intención aquí es aclarar eso, por qué las cosas no funcionan como deberían. – waheed