Why does this.One() call the overrider method from class B and not the virtual one from class A?
<pre><code>class A
{
    public virtual int one()
    {
        return 100;
    }

    public virtual int two()
    {
        return 200;
    }

    public virtual int three()
    {
        return this.one();
    }
}

class B : A
{ 
    public override int one()
    {
        return 300;
    }

    public override int two()
    {
        return this.one();
    }

    public override int three()
    {
        return base.three();
    }
}
class Program
{
    static void Main(string[] args)
    {
        A b = new B();
        Console.WriteLine(b.three());
    }
}
</code></pre>

<p>Why does this code return "300"?</p>
