c#oops为什么它不在示例代码中打印d

Ami*_*mit 0 c# oop

下面的代码将输出显示为"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)

pen*_*tur 6

方法打印d正在等待类型的实例d作为其参数.没有任何调用传递d给调用的方法m1,因此使用其他重载.

您可以调用d1.m1(d1),它将在m1(d obj)方法调用中解析,它将写入d您的控制台.


Wee*_*ble 5

您有4个方法具有相同的名称但不同的参数列表.你打电话给他们三个,但不是第四个.