Учитывая, что у меня есть следующий код:C#: Можно ли скрывать реализацию по наследству?
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); }
}
Лучше ли использовать здесь ключевое слово new
? Как так:
class Derived : Base {
public new void DoStuff(double x, double y) { Console.WriteLine(x * y); }
}
[Полезный материал здесь] (http://stackoverflow.com/q/6576206/301857). Поведение по умолчанию - «новое», поэтому единственная ошибка - это код, который может вводить в заблуждение. –
'public void DoStuff' и' public new void DoStuff' имеют 0 отличий в поведении, кроме первого, выдает предупреждение компилятора, а второе - нет. –