比较:界面方法与虚拟方法与抽象方法

Naw*_*waz 48 c# virtual interface abstract

每种方法的优点和缺点是什么?

  • 界面方法
  • 虚拟方法
  • 抽象方法

什么时候应该选择什么?做出这个决定时应该记住哪些要点?

Gol*_*rol 50

虚拟和抽象几乎相同.虚方法在基类中有一个实现,可以选择覆盖,而抽象方法没有,必须在子类中重写.否则他们是一样的.他们之间的选择取决于具体情况.如果您有基础实现,则使用虚拟.如果你不这样做,并且你需要每个后代为自己实现它,你选择抽象.

接口方法是在类实现的接口中声明的方法的实现.这与其他两个完全无关.我认为一种方法既可以是虚拟也可以是接口.接口的优点是您声明了一个可以由两个完全不同的类实现的接口(duh).这样,只要您要调用的方法在它们共享的接口中声明,就可以在两个不同的类上运行相同的代码.

  • 有关详细信息,请参阅http://stackoverflow.com/a/3621600/8151.tl; dr:接口方法在发出的IL中声明为虚拟. (5认同)