我需要创建一个返回两个参数中更多的泛型方法。运营商>和<不工作。这是我方法的签名:
public static T Greater<T>(ref T a, ref T b)
{
if (a > b)
{
return a;
}
else
{
return b;
}
}
我在C#中相当新秀,在通用类型中是全新的。
答案 0 :(得分:10)
由于T
可以是任何类型,因此无法保证T
会使>
或<
运算符超载。添加IComparable<T>
约束表示T
必须实现包含名为CompareTo
的方法的IComparable<T>
,然后您可以使用该方法来比较您的对象:
public static T Greater<T>(ref T a, ref T b) where T : IComparable<T>
{
if(a.CompareTo(b) > 0) return a;
else return b;
}