[英]Compare two vars of T in a method of a generic class<T,U> (code port from C++ to C#)
如何在泛型类<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
是可比较的,否则你只能用T
做那个System.Object
东西(那并不多),不包括创建一个新的实例,因为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#编程指南)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.