小编Tib*_*ibi的帖子

多态方法不适用于C#4

我只是偶然发现了一个非常有趣的问题.提供以下代码:

using System;

class Program
{
    class A { }
    class B : A { }

    private static void MyMethod(A a) /* first method */
    {
        Console.WriteLine("A"); ;
    }

    private static void MyMethod(B b) /* second method */
    {
        Console.WriteLine("B");
    }

    static void Main(string[] args)
    {
        var a = new A();
        // Call first method
        MyMethod(a);

        A b = new B();
        // Should call the second method
        MyMethod(b);

        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望第二个方法将被调用,因为变量的运行时类型是B.任何想法为什么代码调用第一个方法而不是?

谢谢,蒂比

一些澄清:多态性意味着在声明方法时无关的几种形式.

方法重载是多态,ad-hoc多态的一种形式.

多态性的方式通常通过使用后期绑定来实现.

dynamic是此问题的解决方法.

事实是,这不是在C#(或Java)中工作,它是一个设计决定,我想理解为什么这样做,并且没有一个答案回答这个问题.

/提笔

c# polymorphism c#-4.0

7
推荐指数
2
解决办法
961
查看次数

标签 统计

c# ×1

c#-4.0 ×1

polymorphism ×1