В моем стремлении понять С# правильно, я спрашиваю, какие практические различия между указанием ограничения интерфейса на аргументе generic метода и просто указанием интерфейса как типа аргумента?
public interface IFoo
{
void Bar();
}
public static class Class1
{
public static void Test1<T> (T arg1) where T : IFoo
{
arg1.Bar();
}
public static void Test2(IFoo arg1)
{
arg1.Bar();
}
}
ИЗМЕНИТЬ
Я знаю, что мой пример очень узкий, как пример. Меня интересуют различия, выходящие за рамки его возможностей.