c# – 方法重载和多态

前端之家收集整理的这篇文章主要介绍了c# – 方法重载和多态前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
class Program
    {
        static void Main(string[] args)
        {
            List<A> myList = new List<A> {new A(),new B(),new C()};

            foreach (var a in myList)
            {
                Render(a);
            }

            Console.ReadKey();
        }

        private static void Render(A o)
        {
            Console.Write("A");
        }

        private static void Render(B b)
        {
            Console.Write("B");
        }

        private static void Render(C c)
        {
            Console.Write("C");
        }
    }

    class A
    {

    }

    class B : A
    {

    }

    class C : A
    {

    }

输出为:AAA

有可能以某种方式使用方法重载,以便输出是:ABC?

解决方法

如果您使用C#4,您可以使用动态输入:
foreach (dynamic a in myList)
{
    Render(a);
}

在静态打字中,重载分辨率在编译时执行,而不是执行时.

为了在决策时间选择实现,您必须使用覆盖而不是重载,或者使用如上所述的动态类型.

猜你在找的C#相关文章