我发现如果我运行以下代码:
int i = 7;
i.GetHashCode(); //where GetHashCode() is the derived
//function from System.Object
没有装箱,但如果我调用i.GetType()
(从System.Object
派生的另一个函数)替代GetHashCode()
,那么将需要进行装箱才能调用GetType()
。为什么不可能直接在原始类型实例上调用GetType()
,而不需要装箱,而可以调用GetHashCode()
而不需要装箱?
GetType
被调用了。由于C#是静态类型的,值类型变量不能持有除值类型对象以外的任何东西,因此类型在编译时就可以确定(它是typeof(int)
)。那么为什么要发出运行时调用呢? - Konrad Rudolph