我知道virtual
和sealed
个关键字的定义,但如果您不使用其中任何一个方法,默认情况下是否可以覆盖该方法?
我来自vb.net背景。它在vb.net中是这样的(来自MSDN):
如果未指定Overridable或NotOverridable修饰符,则为 默认设置取决于属性或方法是否覆盖a 基类属性或方法。如果属性或方法覆盖了 基类属性或方法,默认设置为Overridable; 否则,它是NotOverridable。
我只是想知道在C#中是否也是如此。
答案 0 :(得分:6)
默认情况下,C#中的方法不虚拟。
答案 1 :(得分:5)
不,不能。您需要将方法明确标记为虚拟,以允许在派生类中重写它。
但是,您可以使用new关键字隐藏方法。 (MSDN文档)
sealed关键字用于类定义和方法。它不允许从类继承或覆盖方法。默认情况下,如果您不使用此关键字,则其他人可以从您的班级继承。 (MSDN Documentation)
答案 2 :(得分:2)
没有。与Java不同,C#方法默认不是virtual
。它们都不是sealed
,但你不能覆盖它们,因为它们是正常的方法。
答案 3 :(得分:2)
不,您无法覆盖非虚方法。 new关键字只隐藏基类实现,不是一个好习惯。
与Anders Hejlsberg进行讨论here