Quiero escribir una función genérica que tenga una restricción sobre el tipo. Específicamente quiero algo como esto:Restricciones genéricas en la función
bool IsInList<T>(T value, params T[] args)
{
bool found = false;
foreach(var arg in args)
{
if(arg == value)
{
found = true;
break;
}
}
return found;
}
El punto es que se puede comprobar si un elemento está en una lista de parámetros a saber:
if(IsInList("Eggs", "Cheese", "Eggs", "Ham"))
Sin embargo, el compilador estira la pata en la línea de igualdad. Así que quiero poner una restricción sobre el tipo que implementa IEquatable. Sin embargo, las restricciones solo parecen funcionar en el nivel de clase. ¿Es correcto o hay alguna forma de especificar esto genéricamente?
Puede usar 'object.Equals (a, b)' en lugar de 'a.Equals (b)' para que no tenga que preocuparse por objetos nulos. – Servy
Ahora, si solo MS actualizase su documentación para reflejar esta realidad, en lugar de dar a todos la impresión de que la restricción solo es válida para las declaraciones de clase. –