【C#】overrideとnewの違い

new

派生クラスに新たに追加される。
フィールドの型に応じて呼び出しメソッドが決められる。

override

基底クラスのメソッドをオーバーライドする。
インスタンスの型に応じて呼び出しメソッドが決められる。

フィールドの型とインスタンスの型

class A
{
  internal void Call1() => System.Console.WriteLine("A.Call1");
  internal virtual void Call2() => System.Console.WriteLine("A.Call2");
}
class B : A
{
  internal new void Call1() => System.Console.WriteLine("B.Call1");
  internal override void Call2() => System.Console.WriteLine("B.Call2");
}
A a = new B(); // フィールドの型はA, インスタンスの型はB
a.Call1(); // A.Call1()が呼び出される
a.Call2(); // B.Call2()が呼び出される