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

 .NET Discussion :

Comparaison d'objet avec ==


Sujet :

.NET

  1. #1
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut Comparaison d'objet avec ==
    Bonjour,

    puisque les objets sont des pointeurs, que se passe-t-il si on compare deux objets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    System.Diagnostics.Process[] prc  = Process.GetProcesses();
    System.Diagnostics.Process MonProcessus = Process.GetCurrentProcess();
     
    ...
     
    if (prc[i] == MonProcessus)
    Là je compare les pointeurs.
    Si je veux savoir si c'est le même processus, je dois comparer le champs Id.
    Si c'est un objet quelconque (un objet voiture par exemple).
    Existe-t-il un moyen direct de comparer toute les propriétés de l'objet ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    On ne parle pas de pointeur mais de référence.

    Pour personnaliser la comparaison des objets il faut que tu implémentes l'opérateur ==

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    public static bool operator ==(Type a, Type b)

    Remplate Type par ton type.

  3. #3
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut
    Merci

    Citation Envoyé par Skyounet Voir le message
    On ne parle pas de pointeur mais de
    référence.
    Désolé je début en C#, je viens de Delphi.
    Quelle est la différence ?
    Le pointeur c'est l'adresse mémoire fixe.
    La référence c'est une adresse mémoire qui peut bouger en fonction du passage du garbage collector ?

  4. #4
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par bubulemaster Voir le message
    Merci



    Désolé je début en C#, je viens de Delphi.
    Quelle est la différence ?
    Le pointeur c'est l'adresse mémoire fixe.
    La référence c'est une adresse mémoire qui peut bouger en fonction du passage du garbage collector ?
    http://cpp.developpez.com/faq/cpp/?p...TION_reference

    En .NET il n'y a plus la notion de pointeur (sauf en unsafe mais c'est une autre histoire).

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Pour personnaliser la comparaison des objets il faut que tu implémentes l'opérateur ==
    Il me semblait que la manière académique était d'implémenter IComparable, non ?

  6. #6
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Il me semblait que la manière académique était d'implémenter IComparable, non ?
    Hum suis pas sûr, IComparable nous fait implemter CompareTo, et je crois pas que ce soit utile.

    En fait il faudrait overrider Equals et ==

    http://blogs.msdn.com/santoshz/archi...01/145542.aspx

  7. #7
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Il me semblait que la manière académique était d'implémenter IComparable, non ?
    Tu veux dire IEquatable ? IComparable c'est plutôt pour ordonner les objets.

  8. #8
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par The_badger_man Voir le message
    Tu veux dire IEquatable ? IComparable c'est plutôt pour ordonner les objets.
    Oui, c'est à ça que je pensais. Merci d'avoir rectifié.

  9. #9
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut
    Super merci

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

Discussions similaires

  1. Problème comparaison objets avec equals
    Par belkasmi dans le forum Langage
    Réponses: 8
    Dernier message: 01/08/2007, 18h39
  2. [POO] Instancier un objet avec le nom de la classe
    Par shinchun dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 14h44
  3. Réponses: 8
    Dernier message: 21/11/2005, 07h59
  4. [DEBUTANT]comparaison une ligne avec un STRing
    Par Battosaiii dans le forum Langage
    Réponses: 2
    Dernier message: 05/05/2005, 21h15
  5. A propos des modèles d'objet (avec sources)
    Par DevX dans le forum C++Builder
    Réponses: 14
    Dernier message: 01/12/2002, 13h22

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