鉴于我有以下代码:
loop
在不实际使用class ITEM:
SUB_ITEM_1 =1
SUB_ITEM_2 = form.widget()
关键字的情况下覆盖/隐藏基类的行为是一种好习惯吗?下面的代码中是否有任何隐藏的陷阱?
interface IBase {
void DoStuff(double x, double y);
}
class Base : IBase {
public void DoStuff(double x, double y) { Console.WriteLine(x + y); }
}
在这里使用override
关键字是否更好?像这样:
class Derived : Base {
public void DoStuff(double x, double y) { Console.WriteLine(x * y); }
}
答案 0 :(得分:5)
在不实际使用override关键字的情况下覆盖/隐藏基类的行为是一个好习惯吗?
你不能“覆盖”基本方法,因为它不是virtual
。你可以做的就是隐藏它。它很少是一种“良好的做法”,但没有任何东西可以阻止它,所以它是否“好”是非常具有背景性。
在这里使用新关键字会更好吗?
使用new
不会改变最轻微的功能。关键字在那里,以便您可以显式地告诉编译器“我知道我隐藏了一个基本成员”。无论您是否使用new
,行为都是相同的。