是否可以在C#中完成虚拟方法?

Joa*_*nge 5 .net c# methods virtual

我的意思是,有可能将C#中的虚拟方法标记为final,因此没有其他类型派生自此类型,可以再次覆盖它吗?

Jef*_*nal 22

是的:覆盖方法时,您也可以声明它sealed.

  • 基本上,`public override sealed void MyMethod()`编译.`public virtual sealed void MyMethod()`没有,因为在相同的继承级别,您将方法标记为可覆盖且不可覆盖.这是多余的; `public void MyMethod()`会创建一个不可覆盖的方法.这就是我想要做的事情; 虽然虚拟方法可以被密封,但它们实际上必须覆盖最初标记为虚拟的基本方法. (3认同)
  • 好答案.OP的一点澄清; 只有虚拟方法的覆盖(它们本身也是虚拟的)才能被密封; 具有"虚拟"的声明也不能被"封闭".这是多余的; sealed关键字"撤消"一个虚拟或抽象关键字,使该方法在基类中成为虚拟.在使方法虚拟化并密封它之间必须至少有一个级别的继承. (2认同)

Aar*_*ver 7

你可以使用密封.