Bonjour,

Afin de pouvoir comparer 2 objets, j'ai dû redéfinir les opérateurs == et !=. voici comment j'ai fait :

Code : 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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
    class Personne : IComparable
    {
        public int Age;
        public string Nom;
        public Personne(){Age = -1;Nom = "";}
        public Personne(int age, string nom){Age = age;Nom = nom;}
        public int CompareTo(object o) 
        {
            if (o == null)
                return 1;
 
            Personne personne = o as Personne;
            if (personne != null)
            {
                if (Age > personne.Age)
                {
                    return 1;
                }
                else
                {
                    return 0;
                }
            }
            else
            {
                return 0;
            }
 
        }
        public override bool Equals(object o)
        {
            Personne pe = (Personne)o;
            return (Age == pe.Age && Nom == pe.Nom);
 
        }
        public static bool operator==(Personne p1, Personne p2){
            return p1.Equals(p2);
        }
        public static bool operator!=(Personne p1, Personne p2)
        {
            return !p1.Equals(p2);
        }
        public override int GetHashCode()
        {
            return this.ToString().GetHashCode();
        }
    }

Le problème est que dans le cadre d'un autre besoin/exercice, j'ai implémenté l'interface IComparable à ma classe Personne et dans la méthode CompareTo, j'utilise l'opérateur != pour vérifier que le résultat de mon cast n'est pas null ! Mais du coup c'est l'opérateur surchargé != qui est utilisé et non != initial. Donc le test sur le résultat de mon cast dans CompareTo ne fonctionne pas. Comment dois-je faire ?

Merci de votre aide !