Si tengo un objeto complejo, ¿cuál es el patrón de mejores prácticas para escribir código para comparar 2 instancias para ver si son las mismasComparando dos objetos.
Respuesta
Implemente la interfaz IEquatable. Esto define un método generalizado que implementa un tipo o clase de valor para crear un método específico de tipo para determinar la igualdad de instancias. No olvides anular Equals (object) también. Más información aquí:
creo que la respuesta es altamente dependiente del problema. Por ejemplo, es posible que desee considerar los objetos iguales solo si todas sus propiedades son equivalentes. Este sería quizás el caso donde cada objeto no tiene una propiedad de identificación única. Si existe dicha propiedad (o propiedades), por ejemplo, una ID o ID y Versión, que identifique de manera única cada objeto del tipo, entonces es posible que solo desee comparar en función de esa propiedad (o propiedades).
El patrón de base, sin embargo, debería ser algo así como:
if their references are equal (includes both null)
return true
else if one object is null
return false
else
return value based on relevant properties
Tenga en cuenta que si se anula el operador de igualdad, también desea reemplazar GetHashCode() para que los códigos hash para objetos equivalentes son lo mismo. Esto asegurará que las estructuras de datos que usan el código hash para determinar claves duplicadas funcionen correctamente cuando el objeto se utiliza como clave.
Como mencionó un objeto complejo, asegúrese de que todos los objetos compuestos en el objeto complejo implementen igual (objeto) como lo menciona tvanfosson. Finalmente implemente iguales en el objeto Complex aprovechando los iguales de todos los Objetos compuestos
Implemente o invalide ? –
- 1. java comparando dos Objetos de patrón
- 2. Comparando las propiedades de dos objetos simplemente en C#
- 3. C++: Comparando dos vectores
- 4. NSDate, comparando dos fechas
- 5. comparando dos imágenes vectoriales
- 6. Comparando dos fechas
- 7. Comparando 2 objetos personalizados - C#
- 8. Comparando dos grandes listas genéricas
- 9. Comparando dos listas en Python
- 10. Comparando dos matrices en Matlab
- 11. Comparando dos archivos xml usando JAVA
- 12. Comparando dos revisiones de CVS en Eclipse
- 13. Comparando dos vectores en una declaración if
- 14. Comparando dos matrices numpy entre sí
- 15. comparando dos imágenes usando el histograma
- 16. comparando dos cadenas en SQL Server
- 17. Comparando dos IEnumerable para detectar cambios
- 18. Comparando dos números que son aproximadamente iguales
- 19. Comparando dos cadenas en inglés para similitudes
- 20. Comparación de dos objetos NSManagedObjects
- 21. Comparando dos valores del método de reflexión GetValue
- 22. Comparando dobles
- 23. jQuery combinar dos objetos
- 24. Comparando dos clases usando el operador de igualdad
- 25. Comparando dos ObservableCollection (s) para ver si son diferentes
- 26. Comparando dos modelos lineales con anova() en R
- 27. Comparando dos archivos .txt usando difflib en Python
- 28. Comparando dos tipos * de enum para la equivalencia?
- 29. Comparando 2 números en DOS Lote que no funciona
- 30. Comparando C# y Java
cómo es esto diferente de IComparable – leora
IEtable solamente le dirá si son iguales o no. IComparable te dará un pedido relativo. Para objetos que no están ordenados, pero son equivalentes (imágenes, por ejemplo) no puede usar IComparable. – tvanfosson
es .Equals() lo mismo que == ?? – leora