Если бы я хотел создать метод, который принимает экземпляр IList
как параметр (или любой другой интерфейс, но пусть использует IList
в качестве примера), я мог бы создать общий метод с ограничением типа, например
public static void Foo1<T>(T list) where T : IList
{
}
В качестве альтернативы я мог бы создать метод, который принимает параметр IList
напрямую:
public static void Foo2(IList list)
{
}
Во всех смыслах и целях кажется, что эти методы ведут себя точно так же:
List<string> myList = new List<string>();
Foo1(myList);
Foo2(myList);
Итак, вот мой вопрос - какая разница между этими двумя подходами? Похоже, второй подход немного читаем; есть ли какие-либо другие различия, о которых я должен знать (разные ИЛ, генерируемые и т.д.)? Спасибо заранее.