在整数文字(例如ToString)上调用对象方法时,CLR是否首先装入文字?

时间:2011-02-18 08:37:28

标签: .net literals boxing

我想知道拳击是否正在进行,以便在整数文字(5)上调用ToString():

5.ToString();

哦,如果没有,为了让CLR能够调用ToString()方法,会发生什么?

1 个答案:

答案 0 :(得分:1)

不,这不需要装箱 - 因为int会覆盖ToString。编译器可以确切地确定将调用哪个方法,因此不需要通过虚拟调度。它甚至不使用callvirt - 该调用将对应于IL

call instance string [mscorlib]System.Int32::ToString()

如果覆盖结构中的ToString()(等),则调用虚方法将需要装箱。