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 :

Egalité entre 2 structures


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Par défaut Egalité entre 2 structures
    bonjour,
    j'ai à manipuler une structure qui se compose de Trois propriété
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    struct decision
        {
            public int[,] véhicule;
            public List<int>[,] arc;
            public List<int>[,] modéfication;
        }
    si je veux comparer 2 structure, comment je fasse???
    je doit parcourir chaque matrice et comparer ou il existe une méthode implémenter à utiliser directement???

  2. #2
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    On parle bien de deux "instances" de ton struct ?
    Il y a une méthode static Equals qui fait la comparaison. Mais je crois que tu devras la redéfinir pour qu'il effectue la comparaison membre par membre.

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    tu dois pouvoir overrider l'opérateur =, y mettre le code que tu veux qui sert à dire si une instance a les même valeur qu'une autre
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    tu dois pouvoir overrider l'opérateur =, y mettre le code que tu veux qui sert à dire si une instance a les même valeur qu'une autre
    Je crois que le terme exacte c'est overloader (surcharger), car l'override c'est pour les méthodes. Et il faut le faire sur l'opérateur == et non =

    Surcharge d'opérateur en C#

  5. #5
    Membre actif
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Par défaut
    j'ai pas bien saisie
    est-ce que je doit sur charger l'opérateur= ou la methode equals???
    ou je dois implémenter une méthode pour la structure???

  6. #6
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Tu peux faire les deux, voire les trois :

    Tu peux avoir :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    public static Boolean operator== (decision d1, decision d2) {
         if (d1.vehicle != d2.vehicucle)
               return false;
         if (!d1.arc.Equals(d2.arc)) 
               return false;
         if (!d1.modefication.Equals(d2.modefication)) 
               return false;
         return true;
    }
     
    public override Boolean Equals(decision d2) {
         if (this.vehicle != d2.vehicucle)
               return false;
         if (!this.arc.Equals(d2.arc)) 
               return false;
         if (!this.modefication.Equals(d2.modefication)) 
               return false;
         return true;
    }

    Les deux marcheront... (si je me suis pas planté... de tête c'est jamais acquis !)
    Tu peux vérifier ici : MSDN

Discussions similaires

  1. Egalité entre deux champs NULL ?
    Par AyaGizmo dans le forum SQL
    Réponses: 2
    Dernier message: 08/06/2007, 11h42
  2. [XML] Choix entre différentes structures de fichier XML
    Par loic_86 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 21/02/2007, 05h39
  3. [C#] Diffèrence entre les structures et les classes
    Par Kr00pS dans le forum Windows Forms
    Réponses: 2
    Dernier message: 31/08/2006, 12h42
  4. .NET C# Egalité entre 2 instances
    Par mow dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/08/2006, 09h38
  5. [C++.NET] Egalite entre datatables
    Par raboin dans le forum VC++ .NET
    Réponses: 5
    Dernier message: 06/06/2006, 15h59

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