IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comparaison de 2 objets


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 58
    Points : 51
    Points
    51
    Par défaut Comparaison de 2 objets
    Bonjour tous le monde,

    Je vais essayer de vous expliquer mon petit problème.

    Alors tout d'abord, j'ai un objet Civilite.
    Une datagridview bindé sur une List<Civilite>.

    Ensuite, je souhaite comparer une civilité avec celles de ma datagridview.

    Je test donc ((Civilite)dtgCivilite.DataBoundItem).Equals(maCivilite) et ça me retourne false.

    J'ai essayé avec == et ça reviens au même, toujours false.

    Pourtant quand je compare en debug les 2 objets, ils sont bien totalement identique (à l'Id et au timeStamp près)

    Je ne souhaite pas comparer avec l'Id pour éviter de faire un test sur Null
    (pour info les test sur l'id fonctionne parfaitement)

    Est-ce je fais quelque chose de mal?
    Quelqu'un aurait une idée?

    Merci et bonne journée

    Lookoum

  2. #2
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    Bonjour,

    A part erreur de ma part il me semble que le méthode Equals compare les objets selon la zone mémoire qui leur à été alloué.

    La solution est de redéfinir pour ta Classe cette méthode afin qu'elle compare tous les champs l'un à l'autre et renvoie 'true' s'ils sont tous identiques par exemple.

  3. #3
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 58
    Points : 51
    Points
    51
    Par défaut
    Bonjour Pynouz,

    Merci pour ta réponse c'est effectivement la solution que j'avais en tête mais je pensais que le .Equals comparait toutes les propriétés de l'objet et non la ZM.

    En gros je vais prendre ta méthode, mais comparer uniquement les id et si null ou différents je renvoi false sinon true.

    Merci bien

    Je garde le post ouvert au cas ou quelqu'un aurait une autre méthode.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Pynouz Voir le message
    A part erreur de ma part il me semble que le méthode Equals compare les objets selon la zone mémoire qui leur à été alloué.
    Pour les types référence, ça compare les références (i.e. ça renvoie true si les 2 références pointent sur le même objet).
    Pour les types valeur (struct) c'est une comparaison binaire des données de l'objet.

    Donc ici la solution est effectivement d'overrider la méthode Equals (attention, dans ce cas il faut aussi overrider GetHashCode)

  5. #5
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 58
    Points : 51
    Points
    51
    Par défaut
    Merci pour vos réponses je clos donc ce sujet.
    Aussitôt créé aussitôt locké

    Bonne journée et merci pour cette réponse rapide

    Bonne journée

    Lookoum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/01/2012, 19h28
  2. Comparaison entre un objet et sa classe
    Par Diablange dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 25/11/2010, 18h29
  3. Comparaison de 2 objets
    Par sandrine49 dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 26/09/2008, 17h41
  4. Réponses: 5
    Dernier message: 27/10/2007, 10h11
  5. [VB.NET] Comparaison d'un objet
    Par basnifo dans le forum VB.NET
    Réponses: 3
    Dernier message: 30/11/2006, 17h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo