以下 [c#] 代码将无法编译,并出现错误“运算符 == 不能应用于 'T' 和 'T' 类型的操作数”。
public class Widget<T> where T: IComparable
{
public T value;
public Widget(T input) { value = input; }
public bool Equals<T>(Widget<T> w) where T : System.IComparable
{
return (w.value == value);
}
}
有没有办法将 w 输入参数的类型 T 限制为与被比较对象相同的类型 T ,从而保证它们可以相互比较并消除编译器错误?在如下值前面使用 (dynamic) 可以编译,但似乎有更好的方法可以在编译时捕获问题:
public bool Equals<T>(Widget<T> w) where T : System.IComparable
{
return (w.value == (dynamic) value);
}