Интересно, какая разница между следующими:
Случай 1: базовый класс
public void DoIt();
Случай 1: Унаследованный класс
public new void DoIt();
Случай 2: базовый класс
public virtual void DoIt();
Случай 2: Унаследованный класс
public override void DoIt();
Оба случая 1 и 2, похоже, имеют тот же эффект, основанный на тестах, которые я выполнил. Есть ли разница или предпочтительный способ?