在泛型类<t,u>的方法中比较两个T的变量(从C ++到C#的代码端口)

时间:2016-09-01 15:27:27

标签: c# generics

如何在泛型类的方法中比较两个类型为T的变量&lt; T,U&gt;? 下面是一个示例代码,它抛出以下编译器错误:

  

错误CS0019运算符'&gt; ='无法应用于'T'类型的操作数   和'T'

RegionCreationException

我尝试将源代码从C ++移植到C#,而C#对我来说是新的。谢谢你的帮助。

1 个答案:

答案 0 :(得分:7)

你必须告诉C#T是否具有可比性,否则你只能用System.ObjectT件事(而且不多),不包括创建一个新实例,因为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) {
        }
    }
}

请注意,intstringDateTime等标准类型都会实现此界面。

请参阅:IComparable<T> Interface
Constraints on Type Parameters (C# Programming Guide)