virtualのメソッドを派生クラスでoverrideした場合とnewした場合での動作の違いについてです。
たとえば、下記のようなクラスがあったとします。
public class Base
{
    public virtual void Method1()
    {
        Console.WriteLine($"Base.Method1");
    }
}
このクラスのインスタンスを生成してメソッドを実行してみます。
Base baseInstance = new Base(); baseInstance.Method1();
すると下記が出力されます。これはわかります。
Base.Method1
では下記のクラスはどうでしょう。
public class A : Base
{
    public override void Method1()
    {
        Console.WriteLine($"A.Method1");
    }
}
下記のようにインスタンスをふたつの変数に入れます。
ひとつはBaseクラスの変数、もうひとつはAクラスの変数です。
それぞれでメソッドを実行するとどうなるでしょう。
Base aInstance = new A(); aInstance.Method1(); A aInstance2 = new A(); aInstance2.Method1();
下記のように出力されます。overrideしてメソッドを上書きしているので、どのように実行されても同じ結果です。
A.Method1
A.Method1
では続いて下記で試してみます。
public class B : Base
{
    public new void Method1()
    {
        Console.WriteLine($"B.Method1");
    }
}
同じようにふたつの変数に入れて実行してみます。
Base bInstance = new B(); bInstance.Method1(); B bInstance2 = new B(); bInstance2.Method1();
すると出力結果は下記となります。
Base.Method1
B.Method1
どうでしょう。Baseクラスの変数から実行する場合はBaseクラスの処理が実行されています。
overrideでは上書きしているのに対し、newでは上書きはせず、同名で別にメソッドを定義しているのです。
なのでBクラスのほうではBのメソッドが実行され、BaseクラスのほうではもとのBaseのメソッドが実行されます。
