与重写相关联的密封关键字
是否总是需要在下面代码的方法的签名中使用override
关注关键字:
public sealed override string Method1(){.....}
我的意思是,如果我想在没有覆盖的情况下“密封”基类中的方法,是否仍然需要override
关键字?
密封方法只有在覆盖它时才有意义。
这里发生的是以下内容:
您正在覆盖基类( override
)中的方法,并告诉编译器不再允许从您的类派生的类重写此方法(已sealed
)。
如果该方法是您在类中声明的新方法,并且您希望阻止派生类覆盖它,则只需将其声明为虚拟方法即可。
如果方法是在基类中声明但是不能覆盖它,那么它就没有任何意义,因为它已经无法被覆盖。
我认为Hilgarth先生在这里提供了最好的答案,但是为了给以前有过Java背景的程序员(比如我自己)添加一些新东西,我认为大多数C#新手的程序员,往往会在Java
方面与Java
final
密切相关压倒一切。
在Java中 ,未指定"any"
修饰符的默认行为是该方法可以在其派生类中重写 。
在C#中 ,默认行为是除非使用virtual
关键字明确指定,否则无法 覆盖该方法。
希望这有助于补充上面的最佳答案。
你只能密封覆盖,所以我猜答案是肯定的。
- .net相当于htmlunit?
- 使用Reflection调用属性的方法
- entity framework中的LINQ to Entities不支持LINQ表达式节点类型“Invoke”
- .NET在Windows任务栏中嵌入应用程序
- 如何在WPF中没有Print Dialog的情况下直接打印?
- 当控制器类在不同的程序集中时,如何将Controller注册到ASP.NET MVC中?
- MVC SiteMap从menuhelper隐藏节点,但在sitepathhelper中显示(breadcrumbs)
- 使用带有Prism / Unity的Silverlight MVVM,需要检测何时关闭视图
- 手动控制何时重绘屏幕