Maison > développement back-end > C++ > Comment puis-je comparer efficacement les propriétés d'objet pour l'égalité en C# ?

Comment puis-je comparer efficacement les propriétés d'objet pour l'égalité en C# ?

Susan Sarandon
Libérer: 2025-01-22 22:26:10
original
475 Les gens l'ont consulté

How Can I Efficiently Compare Object Properties for Equality in C#?

Comparer efficacement les propriétés d'objets en C#

Cet article explore des méthodes efficaces pour comparer les propriétés d'objets en C#. Un défi courant consiste à déterminer si deux objets du même type ont des valeurs de propriété identiques. Nous examinerons une approche améliorée tirant parti de LINQ et des méthodes d'extension.

Méthode de comparaison de propriétés améliorée

Le code C# suivant fournit une solution raffinée pour comparer les propriétés des objets :

<code class="language-csharp">public static bool PublicInstancePropertiesEqual<T>(this T self, T to, params string[] ignore) where T : class
{
    if (self != null && to != null)
    {
        var type = typeof(T);
        var ignoreList = new List<string>(ignore);
        var unequalProperties =
            from pi in type.GetProperties(BindingFlags.Public | BindingFlags.Instance)
            where !ignoreList.Contains(pi.Name) && pi.GetUnderlyingType().IsSimpleType() && pi.GetIndexParameters().Length == 0
            let selfValue = type.GetProperty(pi.Name).GetValue(self, null)
            let toValue = type.GetProperty(pi.Name).GetValue(to, null)
            where selfValue != toValue && (selfValue == null || !selfValue.Equals(toValue))
            select selfValue;
        return !unequalProperties.Any();
    }
    return self == to;
}</code>
Copier après la connexion

Cette méthode offre plusieurs améliorations clés :

  • Intégration LINQ : L'utilisation de LINQ rationalise l'itération des propriétés, améliorant ainsi la lisibilité et potentiellement les performances par rapport aux boucles for traditionnelles.
  • Méthode d'extension : Implémentée en tant que méthode d'extension, elle permet une syntaxe plus concise et plus fluide lors de la comparaison d'objets.
  • Validation de type simple : Elle vérifie explicitement si les propriétés sont des types simples (par exemple, int, string, bool), évitant ainsi les erreurs potentielles lors du traitement de propriétés d'objet complexes. Cela évite les problèmes de récursion.

Cette approche optimisée garantit une comparaison efficace et fiable des propriétés des objets tout en conservant la clarté et la facilité d'utilisation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal