前几天我注意到这一点,假设你有两个重载的方法:
public void Print<T>(IEnumerable<T> items) {
Console.WriteLine("IEnumerable T");
}
public void Print<T>(T item) {
Console.WriteLine("Single T");
}
这段代码:
public void TestMethod() {
var persons = new[] {
new Person { Name = "Yan", Age = 28 },
new Person { Name = "Yinan", Age = 28 }
};
Print(persons);
Print(persons.ToList());
}
打印:
Single T
Single T
为什么在这些情况下,Person[]
和List<Person>
与T
的匹配度要高于与IEnumerable<T>
的匹配度?
谢谢,
更新:也是,如果你有另一个重载
public void Print<T>(List<T> items) {
Console.WriteLine("List T");
}
Print(persons.ToList());
实际上将打印List T
而不是Single T
。
https://stackoverflow.com/questions/4910018
复制相似问题