【问题标题】:Check Generic objects for equality in VB在 VB 中检查通用对象是否相等
【发布时间】: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 类型都会这样做,所以你不必担心它们)。

标签: vb.net generics equality


【解决方案1】:

给它一个像这样的类约束:

Sub SomeMethod(Of T As Class)(x As T, y As T)
    If x Is y Then
        ' do stuff
    End If
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多