据我所知,每个变量都知道它的运行时类型.
这是一个例子:
void Main()
{
C c = new C();
c.M();
I i = (I)c;
i.M();
}
public interface I
{
void M();
}
public class C : I
{
void I.M()
{
Console.WriteLine("I.M");
}
public void M()
{
Console.WriteLine("M");
}
}
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,i仍然知道它的类型是C.那么,i决定使用I.M而不是M?的机制是什么?