When I run the following type check code, it produces the result:
True
False
Why is this?
Module VBModule
Class TypeKey(Of T)
Public Sub New()
End Sub
Public Shared Operator =(k0 As TypeKey(Of T), k1 As TypeKey(Of T)) As Boolean
Return True
End Operator
Public Shared Operator <>(k0 As TypeKey(Of T), k1 As TypeKey(Of T)) As Boolean
Return False
End Operator
Public Shared Operator =(k0 As TypeKey(Of T), k1 As Object) As Boolean
Return False
End Operator
Public Shared Operator <>(k0 As TypeKey(Of T), k1 As Object) As Boolean
Return True
End Operator
End Class
Public Function is_same_type(Of U, V)() As Boolean
Return New TypeKey(Of U)() = New TypeKey(Of V)()
End Function
Sub Main()
Console.WriteLine(New TypeKey(Of Integer)() = New TypeKey(Of Integer)())
Console.WriteLine(is_same_type(Of Integer, Integer)())
End Sub
End Module
When testing on an online VBNET IDE, there are no warnings.