C#方法默认是密封还是虚拟?

Fin*_*orm 6 c# inheritance

我知道virtualsealed关键字的定义 ,但是如果你不使用它们中的任何一个方法,默认情况下是否可以覆盖该方法?

我来自vb.net背景.它在vb.net中是这样的(来自MSDN):

如果未指定Overridable或NotOverridable修饰符,则默认设置取决于属性或方法是否覆盖基类属性或方法.如果属性或方法重写基类属性或方法,则默认设置为Overridable; 否则,它是NotOverridable.

我只是想知道在C#中是否也是如此.

Ser*_*rvy 6

默认情况下,C#中的方法不是虚拟的.


Wou*_*ort 5

不,它不能.您需要将方法显式标记为虚拟,以允许在派生类中重写该方法.

但是,您可以使用new关键字隐藏方法.(MSDN文档)

sealed关键字用于类定义和方法.它不允许从类继承或覆盖方法.默认情况下,如果您不使用此关键字,其他人将能够从您的类继承.(MSDN文档)