接口约束的通用方法与接口参数的方法的区别

时间:2016-05-04 10:39:12

标签: c# generics

有人可以解释

之间的差异吗?
    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类型的参数。

1 个答案:

答案 0 :(得分:4)

通用表单允许编译器进行类型检查,以确保参数类型相同。

此前: IComparable<T>并非来自IComparable。因此,实现IComparable<T>的对象不必实现IComparable。这些是彼此不相容的。

相关问题