接口中的C#方法在不使用virtual关键字的情况下声明,并在派生类中重写而不使用override关键字.
是否有一个原因?我认为它只是一种语言方便,显然CLR知道如何处理这个问题(默认情况下方法不是虚拟的),但还有其他技术原因吗?
以下是派生类生成的IL:
class Example : IDisposable {
public void Dispose() { }
}
.method public hidebysig newslot virtual final
instance void Dispose() cil managed
{
// Code size 2 (0x2)
.maxstack 8
IL_0000: nop
IL_0001: ret
} // end of method Example::Dispose
Run Code Online (Sandbox Code Playgroud)
请注意,该方法virtual final在IL中声明.