**Implementing a "Comparison" Operator that doesn't return a boolean.**
This operator will be a "range check operator". Is the value with the range of two values?

Since we can't overload the operators of existing sealed class like Integer, Double, etc. (There are no extension operators.)

We have to define a function to "lift" the value into our custom class. (I'm using an extension method to achieve this.)

Public Module Exts
<Runtime.CompilerServices.Extension>
Public Function __(Of T As IComparable(Of T))( value As T) As CMPOP_A(Of T)
Return New CMPOP_A(Of T)(value )
End Function
End Module

Define our custom class. (This will do the first part of the "range check")

Public Class CMPOP_A(Of T As IComparable(Of T))
Private _Value As T
Sub New( value As T )
_Value = value
End Sub
' First part of Range Check is done here. Also note we have to remember what the middle value is over to the next part.
Shared Public Operator < (x As CMPOP_A(of T), y As t) As CMPOP_B(Of T) ' <-- Not a Boolean
Return New CMPOP_B(Of T)( y, x._Value.CompareTo(y) < 0)
End Operator
Shared Public Operator <= (x As CMPOP_A(of T), y As t) As CMPOP_B(Of T) ' <-- Not a Boolean
Return New CMPOP_B(Of T)( y, x._Value.CompareTo(y) <= 0)
End Operator
' The only way I can find to satisfy the compiler.
<Obsolete("Not Supported",True )>
Shared Public Operator >= (x As CMPOP_A(OF T),y As T) As CMPOP_B(OF T) ' <-- Not a Boolean
Throw New NotImplementedException( )
End Operator
' The only way I can find to satisfy the compiler.
<Obsolete("Not Supported",True )>
Shared Public Operator > (x As CMPOP_A(OF T),y As T) As CMPOP_B(OF T) ' <-- Not a Boolean
Throw New NotImplementedException( )
End Operator
End Class

Note: The return type of the operators isn't Boolean.

Second part of the Range Check

Public Class CMPOP_B(Of T As IComparable(Of T))
Private _Value As T
Private _State As Boolean
Sub New( Value As T, state As Boolean )
_Value = Value
_State = state
End Sub
' If the State is False already it skips the comparison and returns False.
Shared Public Operator <(x As CMPOP_B(Of T), y As T) As Boolean
Return x._State AndAlso (x._Value.CompareTo(y)<0)
End Operator
Shared Public Operator <=(x As CMPOP_B(Of T), y As T) As Boolean
Return x._State AndAlso (x._Value.CompareTo(y)<=0)
End Operator
' The only way I can find to satisfy the compiler.
<Obsolete("Not Supported",True )>
Shared Public Operator >= (x As CMPOP_B(OF T),y As T) As Boolean
Throw New NotImplementedException( )
End Operator
' The only way I can find to satisfy the compiler.
<Obsolete("Not Supported",True )>
Shared Public Operator > (x As CMPOP_B(OF T),y As T) As Boolean
Throw New NotImplementedException( )
End Operator
End Class

The operators in this class do return boolean, because this is the end of the "range checking operators" thus require a true/false answer. Is the value within the range?

Example Usage

Dim a = 1
Dim b = 2
Dim c = 4
Dim r = a.__ < b <= c ' == True