当我运行以下类型检查代码时,它会产生结果:
True
False
这是为什么?
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
在在线 VBNET IDE 上进行测试时,没有警告。