我有一个类用于记录给定间隔中的值。即0到1之间的值可能是0.5,1到5可能是1,5到100可能是5.但是我希望将这些信息存储在使用泛型的类中。
所以当我试图找出某个时间间隔内的值时,我希望能够调用这样的函数
Public Function getStepSize(ByVal value As T) As U
For Each s As StepSizeSector(Of T, U) In _sectors
If value >= s.from AndAlso value <= s.to Then Return s.stepSize
Next
End Function
其中T是区间边界的类型,U是区间的实际值。
当我这样做时,我收到一条错误,说“操作员'&gt; ='未在类型'T'和'T'上定义
如何强制进行此比较?我将只使用允许比较的类型,即Integer,Double,Decimals等。
是否有办法明确告知编译器类型有这些比较运算符?
感谢您的帮助, 问候。
答案 0 :(得分:3)
您的所有类型都会实现IComparable(Of T)
,因此您需要将此约束添加到通用类型定义中,并使用CompareTo()
调用替换比较运算符。