vb.net比较泛型类型

时间:2010-08-21 01:20:10

标签: vb.net generics

我有一个类用于记录给定间隔中的值。即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等。

是否有办法明确告知编译器类型有这些比较运算符?

感谢您的帮助, 问候。

1 个答案:

答案 0 :(得分:3)

您的所有类型都会实现IComparable(Of T),因此您需要将此约束添加到通用类型定义中,并使用CompareTo()调用替换比较运算符。