相关疑难解决方法(0)

是否可以将重写方法标记为final

在C#中,是否可以将重写的虚拟方法标记为final,因此实现者无法覆盖它?我该怎么办?

一个例子可以让它更容易理解:

class A
{
   abstract void DoAction();
}
class B : A
{
   override void DoAction()
   {
       // Implements action in a way that it doesn't make
       // sense for children to override, e.g. by setting private state
       // later operations depend on  
   }
}
class C: B
{
   // This would be a bug
   override void DoAction() { }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法修改B以防止其他子C在编译时或运行时覆盖DoAction?

.net c# inheritance

45
推荐指数
4
解决办法
1万
查看次数

标签 统计

.net ×1

c# ×1

inheritance ×1