相关疑难解决方法(0)

选择哪种C#方法重载?

为什么两个重载都匹配时调用泛型方法?

public static void method1(object obj)
{
    Console.WriteLine("Object");
}

public static void method1<T>(T t)
{
    Console.WriteLine("Type T");
}

public static void Main(String args[])
{
    method1("xyz"); //Will print "Type T";
}
Run Code Online (Sandbox Code Playgroud)

这里不应该有任何冲突,对吧?

.net c# generics

23
推荐指数
2
解决办法
3386
查看次数

忽略替代功能并使用新功能

刚刚在网上进行测验,准备面试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)");
    }
}
Run Code Online (Sandbox Code Playgroud)

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

c# inheritance overriding overloading

6
推荐指数
0
解决办法
39
查看次数

标签 统计

c# ×2

.net ×1

generics ×1

inheritance ×1

overloading ×1

overriding ×1