次の[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に制限して、それらを相互に比較できることを保証し、コンパイラーエラーを排除する方法はありますか?以下のように値の前に(動的)を使用するとコンパイルできますが、コンパイル時に問題をキャッチするより良い方法があるようです。
public bool Equals<T>(Widget<T> w) where T : System.IComparable
{
return (w.value == (dynamic) value);
}