Ich habe festgestellt, dass wenn ich folgende Zeilen Code ausführen.Warum müssen einige Funktionen der Object-Klasse in einer primitiven Instanz aufgerufen werden?
int i = 7;
i.GetHashCode(); //where GetHashCode() is the derived
//function from System.Object
ist kein Boxen getan, aber wenn ich i.GetType()
(eine andere abgeleitete Funktion von System.Object
) anstelle von GetHashCode()
anrufen, wird ein Boxen erforderlich GetType()
zu nennen, warum GetType()
auf primitive Typ-Instanz anzurufen seine nicht möglich, direkt , ohne Boxen, während es möglich ist, GetHashCode()
ohne Boxen zu nennen?
Ich bin überrascht, dass 'GetType' überhaupt genannt wird. Da C# statisch typisiert ist und eine * Werttypvariable * nur Objekte vom Werttyp enthalten kann, ist der Typ beim Kompilierungstyp bestimmbar (es ist 'typeof (int)'). Warum also einen Laufzeitaufruf ausgeben? –
Das ist richtig, aber die Absicht ist hier zu klären, warum die Dinge nicht so funktionieren, wie sie sollten. – waheed