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 !
Partager