【发布时间】:2017-10-24 15:58:13
【问题描述】:
这似乎很琐碎,但我无法让它发挥作用。我需要比较两个相同类型的泛型T 是否相等:
Sub SomeMethod(Of T)(x As T, y As T)
If x Is y
' do stuff
End If
End Sub
编译器说不:
“T”类型的“Is”操作数只能与“Nothing”进行比较,因为“T”是没有类约束的类型参数。
【问题讨论】:
-
作为记录:
Is比较引用,因此您的代码尝试检查x是否与y是完全相同相同的对象/实例。如果您只是想比较两者,那么您应该会看到:stackoverflow.com/a/488301/3740093 - 如果您设置为T的类型是 自定义 i> 输入你必须确保它覆盖Object.Equals(),否则这将不起作用(几乎所有内置的 .NET 类型都会这样做,所以你不必担心它们)。