下面的代码将输出显示为"abc".
请有人解释为什么它不打印"d"
public class a
{
public void m1(a obj)
{
Console.WriteLine("a");
}
}
public class b :a
{
public void m1(b obj)
{
Console.WriteLine("b");
}
}
public class c: b
{
public void m1(c obj)
{
Console.WriteLine("c");
}
}
public class d: c
{
public void m1(d obj)
{
Console.WriteLine("d");
}
}
class MainRunning
{
static void Main(string[] args)
{
a a1 = new a();
b b1 = new b();
c c1 = new c();
d d1 = new d();
d1.m1(a1);
d1.m1(b1);
d1.m1(c1);
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
方法打印d正在等待类型的实例d作为其参数.没有任何调用传递d给调用的方法m1,因此使用其他重载.
您可以调用d1.m1(d1),它将在m1(d obj)方法调用中解析,它将写入d您的控制台.