相关疑难解决方法(0)

为什么C#接口方法没有声明为抽象或虚拟?

接口中的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中声明.

c# methods virtual-functions interface abstract

106
推荐指数
3
解决办法
7万
查看次数

标签 统计

abstract ×1

c# ×1

interface ×1

methods ×1

virtual-functions ×1