es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es la mejor manera de comparar dos objetos en C#?

Tengo dos objetos complejos del mismo tipo. Quiero comprobar si hay alguna diferencia entre los dos objetos. Tengo dos opciones para lograr esto, ya sea convirtiendo ambos objetos a cadena utilizando JsonConvert.SerializeObject y comparar la cadena como:

Var existingData = JsonConvert.SerializeObject(objOld);
Var newData = JsonConvert.SerializeObject(objNew);
return existingData == newData;

La otra opción es usar la reflexión y recorrer todas las propiedades como se muestra a continuación.

Protegido bool MatchObject (objeto newObj, objeto oldObj)
{
Type currentType = newObj.GetType();
PropertyInfo[] props = currentType.GetProperties();

es el mismo objeto verdadero;
foreach (var prop en props)
{
    var i = prop.GetValue(newObj);
    var f = prop.GetValue(oldObj);
    Si (!object.Equals(i, f))
    {
        es el mismo objeto = falso;
        romper;
    }
}

es el mismo objeto verdadero;

}

¿Cuál de los enfoques anteriores es más eficiente desde la perspectiva del rendimiento?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Desde el punto de vista del rendimiento, el segundo enfoque que utiliza la reflexión y recorre todas las propiedades sería más eficiente.

    Si bien el primer enfoque de serializar ambos objetos a cadenas y compararlos puede ser más simple, potencialmente puede ser más intensivo en recursos ya que requiere memoria adicional y tiempo de procesador para realizar la serialización y comparación de cadenas.

    En contraste, el segundo enfoque accede directamente a las propiedades de los objetos sin necesidad de serialización o conversión adicional, lo que lo convierte en una opción más eficiente. Sin embargo, es importante tener en cuenta que la reflexión también puede tener sobrecarga de rendimiento, por lo que puede valer la pena considerar optimizaciones adicionales como el almacenamiento en caché o la limitación del número de propiedades a comparar.

Comments are closed.