我遇到了一个值类型正在实现ref的scenerio.类型.
只是想知道怎么可能(幕后的是什么?)
struct是一个值类型,接口是ref.类型但结构可以实现接口没有任何错误...
有什么想法吗?提前致谢
实际上,它同时以两种不同的方式实现.
首先,任何值类型都可以装入引用类型的对象实例中.这个盒子是由运行时按需发明的,它将以你期望的方式实现接口 - 即盒子将实现value-type实现的任何接口.
但是,CLI也允许"受限制的呼叫".约束调用将虚拟调用转换为静态调用,但仅限于值类型通过覆盖或接口实现实现实例方法的情况(否则它由JIT实现为虚拟调用).特别是泛型广泛使用受约束的调用(受限制的操作码与泛型一起添加,正是出于这个原因).