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
risposta
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
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
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
Attenzione: object1 e object2 potrebbero essere di tipi diversi ma attualmente risolti in Nothing. – onedaywhen
@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
- 1. Confronto di due oggetti
- 2. Confronto oggetti classe
- 3. Confronto di oggetti in LinkedList.contains()
- 4. Confronto di due oggetti NSNumber
- 5. Confronto oggetti in test unità
- 6. Confronto di due oggetti del calendario
- 7. Confronto di oggetti di eccezione in Python
- 8. Confronto di matrici di oggetti in JavaScript
- 9. Core Performance dati: NSPredicate confronto di oggetti
- 10. Confronto di 2 oggetti personalizzati - C#
- 11. Confronto di oggetti dattilografati nella classe generica
- 12. Confronto di due oggetti DateTime Joda-
- 13. VB6 Attrezzi ed eventi
- 14. Err.Number (VB6 versus C#)
- 15. Download File - VB6
- 16. VB6 alla conversione VB.net
- 17. Debug VB6 Crash Dump
- 18. Debug remoto in VB6
- 19. VB6: disabilitare le varianti
- 20. Confronto di due oggetti con un controllo per null
- 21. Memorizzazione e confronto di oggetti da un database
- 22. ricorsiva profonda oggetti di confronto (ancora una volta)
- 23. perché il confronto Javascript non funziona con gli oggetti?
- 24. Metodo comune per il confronto di due oggetti Java
- 25. Vantaggi/svantaggi delle diverse implementazioni per il confronto degli oggetti
- 26. PHP: confronto tra due oggetti DateTime con fusi orari diversi
- 27. Confronto delle liste di oggetti con chiave personalizzata
- 28. intesa VB6 file di progetto (VBP)
- 29. Iterate attraverso un dizionario VB6
- 30. Come distribuire le applicazioni VB6?
"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
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
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