前几天我注意到了这一点,假设您有两个重载方法:
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
.