C# complex inheritence
<p>Suppose we have code like this:</p>

<pre><code>interface I
{
    int P { get; }
}

class A : I
{
    public virtual int P { get { return 0; } }
}

class B : A
{
    public override int P { get { return 1; } }
}

class C : B, I
{
    public int P { get { return 2; } }
}

A c = new C();
I ic = new C();
</code></pre>

<p>Now the question is what whould be c.P and ic.P? Actually I know it will be 1 and 2, but can you explain me why?</p>
