VB6对象比较

VB6对象比较,vb6,object,compareto,Vb6,Object,Compareto,哪种VB6方法允许对相同类型的两个自定义对象(在类模块中定义)进行相互比较?我认为有一个与Java的compareTo方法等价的方法,但我在任何地方都找不到它。如果“比较”的意思是“它们是同一类型的吗?”,您可以使用TypeName函数: If (object1 <> Nothing) and (object2 <> Nothing) then If (TypeName(object1) = TypeName(object2)) Then Debug.Prin

哪种VB6方法允许对相同类型的两个自定义对象(在类模块中定义)进行相互比较?我认为有一个与Java的compareTo方法等价的方法,但我在任何地方都找不到它。

如果“比较”的意思是“它们是同一类型的吗?”,您可以使用TypeName函数:

If (object1 <> Nothing) and (object2 <> Nothing) then
  If (TypeName(object1) = TypeName(object2)) Then
    Debug.Print "object types are the same"
  Else
    Debug.Print "object types are NOT the same"
  End If
End If

对于可能对同一问题感到疑惑的其他人:

在做了大量的研究之后,VB6似乎没有任何内置的
compareTo
equals
方法,就像Java一样

我忘了在Java中,
compareTo
是在
Java.lang.Comparable
接口中定义的。由于VB6中的接口非常复杂,即使您编写了自己的
Comparable
接口,您也必须将对象的
Comparable\u compareTo调用到
方法,除非它声明为
Comparable
,这是毫无意义的


一句话:如果您想在VB6类中使用
compareTo
equals
方法,只需将它们放入即可。

我的意思是,具有相同属性的类的两个实例应该返回true。当然,您可以手动比较这些属性,但我认为VB6有一个方法,您可以定义自动进行比较的位置。注意:object1和object2可以是不同的类型,但目前没有解析结果。@onedaywhen:很好。我假设TypeName返回的是对象变量的类型,即使它被设置为“Nothing”,但它却返回“Nothing”。这使事情复杂化了。我在示例代码中加了一个复选框,但如果其中一个对象为空,我想类型比较是不可能的。@derek:在阅读了您在评论中所作的澄清之后,我现在明白我还没有回答您的问题。对不起,我知道VB6中没有任何方法可以实现您的愿望。嘿,别担心。无论如何谢谢你!“一个类模块中定义的两个对象”--你所说的“已定义”是什么意思?每个类模块只能定义一个类。也许你指的是“实例化的两个对象”,但它们实例化的位置的相关性如何?我正在处理两个对象,它们都是我在类模块中定义的单个类的实例。对不起,不清楚。好的,我想我现在明白了。我几乎可以肯定VB中没有内置任何东西。出于兴趣,如果其中一个属性是一个对象,您会期望发生什么?它是否需要调用该对象的compareTo方法…?@onedaywhen是的,它会。根据您用来比较对象的标准,可能会涉及几个递归调用。
If (object1 Is object2) Then
  Debug.Print "objects references are the same"
Else
  Debug.Print "objects references are NOT the same"
End If