то, что вы описали, это шаблоны в C ++

етил это на днях, скажем, у вас есть два перегруженных метода:

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.

Ответы на вопрос(1)

Ваш ответ на вопрос