Я хочу написать универсальную функцию, которая имеет ограничение на тип. В частности, мне нужно что-то вроде этого:
bool IsInList<T>(T value, params T[] args)
{
bool found = false;
foreach(var arg in args)
{
if(arg == value)
{
found = true;
break;
}
}
return found;
}
Дело в том, что вы можете проверить, находится ли элемент в списке параметров, а именно:
if(IsInList("Eggs", "Cheese", "Eggs", "Ham"))
Однако компилятор хрипит в строке равенства. Поэтому я хочу наложить ограничение на тип, который он реализует IEquatable. Однако ограничения, похоже, работают только на уровне класса. Это правильно или есть какой-то способ указать это в общем?