首页 > 解决方案 > 忽略覆盖函数并使用新函数

问题描述

刚刚在网上通过测验准备面试C#。我读了这个问题:

using System;

// ...

public class Program
{
    static void Main(string[] args)
    {
        Derived d = new Derived();
        int i = 10;
        d.Func(i);
    }
}

public class Base
{
    public virtual void Func(int x)
    {
        Console.WriteLine("Base.Func(int)");
    }
}

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

    public void Func(object o)
    {
        Console.WriteLine("Derived.Func(object)");
    }
}

它说输出实际上应该是Derived.Fun(Object). 你能帮我理解它为什么会这样做吗?我以为它会Func以整数作为参数调用命令。

标签: c#inheritanceoverridingoverloading

解决方案


推荐阅读