Пожалуйста, смотрите следующие примеры:
class A : ISomething
class B : ISomething
class C : ISomething
private void AcceptsISomething<T>(T input) where T : ISomething
{
if (input is A)
if (input is B)
if (input is C)
}
private void AcceptsISomething(ISomething input)
{
if (input is A)
if (input is B)
if (input is C)
}
В чем разница функциональности между двумя примерами выше?
Я думаю, что нет никакой разницы, потому что обе функции гарантируют, что input
реализовал ISomething
, и в обеих функциях input
может быть успешно сопоставлено с типами, которые реализуют ISomething
.
Но я также думаю, что если бы на самом деле не было никакой разницы, то не было бы никаких причин для существующая особенность where
.