Я заметил это на днях, скажем, у вас есть два перегруженных метода:
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>
в этих случаях?
Спасибо,
UPDATE: Кроме того, если у вас есть другая перегрузка
public void Print<T>(List<T> items) {
Console.WriteLine("List T");
}
Print(persons.ToList());
будет фактически печатать List T
вместо Single T
.