2010-08-21 135 views
2

我有一个类,我用它来记录一个给定的时间间隔值。即0和1之间的值可能是0.5,1到5可能是1,5到100可能是5.但是我希望将这些信息存储在使用泛型的类中。vb.net比较泛型类型

所以,当我试图找出在一定的区间值,我想能够在一个函数调用此类

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是间隔的实际值。

当我这样做,我得到一个错误说操作员“> =”未在类型“T”和定义的“T”

我怎么能强迫该比较发生?我只会使用允许进行比较的类型,即Integer,Double,Decimals等。

是否有办法显式地告知编译器一个类型具有这些比较运算符?

感谢您的帮助, 关心。

回答

2

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