如何在泛型类的方法中比较两个类型为T的变量< T,U>? 下面是一个示例代码,它抛出以下编译器错误:
错误CS0019运算符'> ='无法应用于'T'类型的操作数 和'T'
RegionCreationException
我尝试将源代码从C ++移植到C#,而C#对我来说是新的。谢谢你的帮助。
答案 0 :(得分:7)
你必须告诉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> Interface,
Constraints on Type Parameters (C# Programming Guide)