如何在泛型类<T,U>的方法中比较两个类型为T的变量?这是一个抛出以下编译器错误的示例代码:
错误CS0019运算符'> ='不能应用于'T'和'T'类型的操作数
class IntervalSet< T, U >
{
    public void Add ( T start, T end, ref U val )
    {
        // new interval is empty?
        if (start >= end) // ERROR
            return; 
    }
}
我尝试将源代码从C++移植到C#,而C#对我来说是新的.谢谢你的帮助.
你必须告诉C#那T是相当的,否则你只能做System.Object事情T(这不是很多),但不包括创建一个新的实例,因为C#不知道是否T有一个默认的构造函数:
class IntervalSet< T, U >
    where T : IComparable<T>
{
    public void Add ( T start, T end, ref U val )
    {
        if (start.CompareTo(end) >= 0) {
        }
    }
}
需要注意的是标准类型,如int,string,DateTime等方面都实现了这个接口.
请参阅:IComparable <T>接口,
        类型参数约束(C#编程指南)