假设我们有这样的代码:
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();
现在的问题是 cP 和 ic.P 应该是什么?实际上我知道它会是 1 和 2,但你能解释一下为什么吗?