首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何用重载和重写方法来解释这种行为?

如何用重载和重写方法来解释这种行为?
EN

Stack Overflow用户
提问于 2014-05-13 01:34:58
回答 1查看 269关注 0票数 16

有没有人能解释一下为什么这段代码会显示Derived.DoWork(double)。我可以为这种行为想出一些解释,但我希望有人为我澄清这一点。

using System;

public class Base
{
    public virtual void DoWork(int param) {
        Console.WriteLine("Base.DoWork");
    }
}

public class Derived : Base
{
    public override void DoWork(int param) {
        Console.WriteLine("Derived.DoWork(int)");
    }

    public void DoWork(double param) {
        Console.WriteLine("Derived.DoWork(double)");
    }

    public static void Main() {
        int val = 5;
        Derived d = new Derived();
        d.DoWork(val);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2014-05-13 01:50:56

这种行为显然是有意为之的:

‘选择重载时,如果在派生类中声明了任何兼容的方法,则在基类中声明的所有签名都将被忽略-即使它们在同一派生类中被重写!’http://social.msdn.microsoft.com/Forums/vstudio/en-US/a70b25d4-f310-4d06-9dc2-a453f822f4f3/function-not-getting-called-when-overloading-the-function-of-base-class-in-derived-class-with?forum=csharpgeneral

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23615356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档