Tag: 装箱

为什么在值类型上调用显式接口实现会导致它被装箱?

我的问题与此问题有些相关: generics约束如何阻止使用隐式实现的接口装入值类型? ,但不同,因为它不需要约束来执行此操作,因为它根本不是通用的。 我有代码 interface I { void F(); } struct C : I { void IF() {} } static class P { static void Main() { C x; ((I)x).F(); } } 主要方法编译如下: IL_0000: ldloc.0 IL_0001: box C IL_0006: callvirt instance void I::F() IL_000b: ret 为什么不编译到这个? IL_0000: ldloca.s V_0 IL_0002: call instance void C::IF() IL_0007: […]