c#中泛型函数重载解析的奇怪行为

时间:2018-05-15 13:54:09

标签: c# generics overloading

我有以下代码

class Program
{
    static void Main()
    {
        Foo(new List<int>());
        Foo(10.3);
        Foo((IList<int>)new List<int>());
    }

    static void Foo<T>(IList<T> list)
    {
        Console.WriteLine("Foo'List: {0}", typeof(T));
    }

    static void Foo<T>(T item)
    {
        Console.WriteLine("Foo'T: {0}", typeof(T));
    }
}

执行结果时

Foo'T: System.Collections.Generic.List`1[System.Int32]
Foo'T: System.Double
Foo'List: System.Int32

奇怪的是,即使Foo<T>(T)实施了Foo<T>(IList<T>),第一次对List<T>而非IList<T>进行了调用。

0 个答案:

没有答案