0

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

5.ToString();

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

4

1 回答 1

1

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

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

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

于 2011-02-18T08:42:01.983 回答