2010-08-21 3 views
2

주어진 간격으로 값을 기록하는 데 사용하는 클래스가 있습니다. 나는. 0과 1 사이의 값은 0.5 일 수도 있고 1에서 5는 1 일 수도 있고 5에서 100은 5 일 수도 있습니다. 그러나이 정보는 제네릭을 사용하는 클래스에 저장하고 싶습니다. 나는 특정 구간의 값을 찾을 때vb.net은 제네릭 형식을 비교합니다.

그래서 T는 구간 경계의 유형입니다이

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 

같은 기능을 호출 할 수 싶습니다 및 U는이다 interval의 실제 값. 나는이 작업을 수행 할 때

내가 말하는 오류가 운영자 '> ='유형 'T'와에 정의되지 않은 'T'

내가 자리를 차지할이 비교를 강제 할 수 있습니까? 나는 정수, 두자리, 십진수 등의 비교를 허용하는 유형만을 사용할 것입니다.

형식에 이러한 비교 연산자가 있음을 명시 적으로 컴파일러에게 알리는 방법이 있습니까?

감사합니다. 감사합니다.

답변

2

모든 유형은 IComparable(Of T)이므로이 제약 조건을 제네릭 형식 정의에 추가하고 비교 연산자를 CompareTo() 호출로 바꿔야합니다.

관련 문제