加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 方法重载和多态

发布时间:2020-12-15 07:49:12 所属栏目:百科 来源:网络整理
导读:class Program { static void Main(string[] args) { ListA myList = new ListA {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
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);
}

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读