我想知道拳击是否正在进行,以便在整数文字(5)上调用ToString():
5.ToString();
哦,如果没有,为了让CLR能够调用ToString()方法,会发生什么?
答案 0 :(得分:1)
不,这不需要装箱 - 因为int
会覆盖ToString
。编译器可以确切地确定将调用哪个方法,因此不需要通过虚拟调度。它甚至不使用callvirt - 该调用将对应于IL
call instance string [mscorlib]System.Int32::ToString()
如果不覆盖结构中的ToString()
(等),则调用虚方法将需要装箱。