2010-06-30 10 views
5

Quale metodo VB6 consente di confrontare due oggetti personalizzati dello stesso tipo (definiti in un modulo di classe)? Penso che ci sia un equivalente al metodo compareTo di Java, ma non riesco a trovarlo da nessuna parte.Confronto oggetti VB6

+0

"due oggetti definiti in un modulo di classe" - Cosa si intende per "definito"? Puoi definire solo una classe per modulo di classe. Forse intendevi "due oggetti istanziati" ma quale sarebbe la rilevanza di dove sono stati istanziati? – onedaywhen

+0

Sto lavorando con due oggetti, entrambi sono istanze di una singola classe che ho definito in un modulo di classe. Scusa se non è chiaro. – derekerdmann

+0

OK Penso di vedere ora. Sono quasi sicuro che non ci sia nulla in VB. Fuori di interesse, cosa ti aspetteresti che accada se uno degli attributi fosse un oggetto? Dovrebbe chiamare * quel * metodo di confronto dell'oggetto ...? – onedaywhen

risposta

1

Per gli altri che potrebbe chiedere circa la stessa domanda:

Dopo aver fatto un sacco di ricerche, sembra che VB6 non abbia alcun tipo di metodi integrati compareTo o equals, come Java.

Ho dimenticato che in Java, compareTo è definito nell'interfaccia java.lang.Comparable. Poiché le interfacce sono così spezzate in VB6, anche se hai scritto la tua interfaccia Comparable, dovresti chiamare il tuo metodo Comparable_compareTo a meno che non sia stato dichiarato come Comparable, che è inutile.

Linea di fondo:. Se vuoi compareTo o equals metodi nelle classi VB6, basta metterli in

6

Se per "confrontare" vuol dire "sono la stessa tipo?", È possibile il TypeName funzione:

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 

Se per "confrontare" intendi "non fanno riferimento allo stesso oggetto ? in memoria", è possibile utilizzare il Is operatore:

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

Quello che voglio dire è che due istanze di una classe con attributi identici dovrebbero restituire true. Naturalmente, è possibile confrontare questi attributi manualmente, ma ho pensato che VB6 avesse un metodo che potevi definire dove accadrebbe automaticamente. – derekerdmann

+0

Attenzione: object1 e object2 potrebbero essere di tipi diversi ma attualmente risolti in Nothing. – onedaywhen

+0

@onedaywhen: buona cattura. Supponevo che TypeName restituisse il tipo della variabile oggetto anche se era impostato su "Nothing", ma invece restituisce "Nothing". Questo complica le cose. Ho inserito un controllo nel mio codice di esempio, ma se uno di questi oggetti è Nothing, immagino che un confronto di tipi non sia possibile. – raven