Если бы я хотел создать метод, который принимает экземпляр 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);
Итак, вот мой вопрос - в чем разница между этими двумя подходами?Кажется, что второй подход немного более читабелен;Есть ли какие-то другие различия, о которых я должен знать (разные генерируемые IL и т. д.)?Заранее спасибо.