有人可以解释
之间的差异吗? public void SwapIfGreater<T>(ref T lhs, ref T rhs) where T : System.IComparable
{
T temp;
if (lhs.CompareTo(rhs) > 0)
{
temp = lhs;
lhs = rhs;
rhs = temp;
}
}
和
public void SwapIfGreater(ref System.IComparable lhs, ref System.IComparable rhs)
{
System.IComparable temp;
if (lhs.CompareTo(rhs) > 0)
{
temp = lhs;
lhs = rhs;
rhs = temp;
}
}
在我看来,只要您将通用方法限制为仅接受实现接口的参数,您也可以使用interface类型的参数。
答案 0 :(得分:4)
通用表单允许编译器进行类型检查,以确保参数类型相同。
此前:
IComparable<T>
并非来自IComparable
。因此,实现IComparable<T>
的对象不必实现IComparable
。这些是彼此不相容的。