相关疑难解决方法(0)

C#中方法重载的不同行为

我正在浏览C#Brainteasers(http://www.yoda.arachsys.com/csharp/teasers.html)并遇到一个问题:这段代码的输出应该是什么?

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

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

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

class Test
{
    static void Main()
    {
        Derived d = new Derived();
        int i = 10;
        d.Foo(i);  // it prints ("Derived.Foo(object)"
    }
} 
Run Code Online (Sandbox Code Playgroud)

但是,如果我将代码更改为

class Derived 
{
    public void Foo(int x)
    {
        Console.WriteLine("Derived.Foo(int)");
    }

    public void Foo(object o)
    {
        Console.WriteLine("Derived.Foo(object)");
    } …
Run Code Online (Sandbox Code Playgroud)

c# inheritance overloading

14
推荐指数
1
解决办法
5182
查看次数

标签 统计

c# ×1

inheritance ×1

overloading ×1