Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想知道是否正在进行装箱以便在整数文字(5)上调用 ToString():
5.ToString();
哦,如果没有,为了让 CLR 能够调用 ToString() 方法,发生了什么?
不,这不需要拳击 - 因为int覆盖ToString. 编译器可以准确地确定调用哪个方法,因此不需要经过虚拟调度。它甚至不使用 callvirt - 该调用将对应于 IL
int
ToString
call instance string [mscorlib]System.Int32::ToString()
如果您不在结构中覆盖ToString()(等),则对虚拟方法的调用将需要装箱。
ToString()