2010-06-30 30 views
5

¿Qué método VB6 permite comparar dos objetos personalizados del mismo tipo (definidos en un módulo de clase)? Creo que hay un equivalente al método compareTo de Java, pero no puedo encontrarlo en ningún lado.VB6 Comparación de objetos

+0

"dos objetos definidos en un módulo de clase" - ¿Qué quiere decir con "definido"? Solo puedes definir una clase por módulo de clase. Tal vez se refería a "dos objetos instanciados", pero ¿cuál sería la relevancia de dónde se crearon las instancias? – onedaywhen

+0

Estoy trabajando con dos objetos, los cuales son instancias de una sola clase que definí en un módulo de clase. Lo siento, no estaba claro. – derekerdmann

+0

OK, creo que ya veo. Estoy casi seguro de que no hay nada incorporado a VB. Fuera de interés, ¿qué esperarías que ocurriera si uno de los atributos fuera un objeto? ¿Necesitaría llamar a * ese * método compareTo ...? – onedaywhen

Respuesta

1

Para otros que puede preguntarse sobre la misma pregunta:

Después de mucho mirar alrededor, parece que VB6 no tiene ningún tipo de métodos incorporados compareTo o equals, como hace Java.

Olvidé que en Java, compareTo se define en la interfaz java.lang.Comparable. Dado que las interfaces están tan rotas en VB6, incluso si usted escribió su propia interfaz Comparable, tendría que llamar al método Comparable_compareTo de su objeto, a menos que se haya declarado como Comparable, lo cual no tiene sentido.

En pocas palabras:. Si quieres compareTo o equals métodos en sus clases de VB6, simplemente los puso en

6

Si por "comparar" quiere decir "son del mismo tipo?", Puede que el TypeName función:

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 

Si por "comparar" quiere decir "qué hacen referencia al mismo objeto ? en la memoria", se puede utilizar el operador de Es:

If (object1 Is object2) Then 
    Debug.Print "objects references are the same" 
Else 
    Debug.Print "objects references are NOT the same" 
End If 
+0

Lo que quiero decir es que dos instancias de una clase con atributos idénticos deberían ser verdaderas. Naturalmente, podría comparar esos atributos de forma manual, pero pensé que VB6 tenía un método que podía definir dónde ocurriría automáticamente. – derekerdmann

+0

Cuidado: object1 y object2 pueden ser de diferentes tipos pero actualmente resuelven nada. – onedaywhen

+0

@onedaywhen: Buena captura. Supuse que TypeName devolvía el tipo de la variable objeto incluso si estaba configurada en "Nothing", pero en su lugar devuelve "Nothing". Eso complica las cosas. Pongo un cheque en mi código de ejemplo, pero si uno de esos objetos es Nothing, supongo que no es posible hacer una comparación de tipos. – raven

Cuestiones relacionadas