====IEquatable==== struct doit implémenter IEquatable pour améliorer les performances. public struct Point : IEquatable { private readonly int _X; private readonly int _Y; public Point(int x, int y) { _X = x; _Y = y; } public int X { get { return _X; } } public int Y { get { return _Y; } } public override int GetHashCode() { int retval = 5381 retval = retval * 33 + _X.GetHashCode(); retval = retval * 33 + _Y.GetHashCode(); return retval; } public override bool Equals(object obj) { if (!(obj is Point)) return false; return Equals((Point)obj); } public bool Equals(Point other) { if (_X != other._X) return false; return _Y == other._Y; } public static bool operator ==(Point point1, Point point2) { return point1.Equals(point2); } public static bool operator !=(Point point1, Point point2) { return !point1.Equals(point2); } } [[https://docs.microsoft.com/fr-fr/dotnet/csharp/programming-guide/statements-expressions-operators/how-to-define-value-equality-for-a-type|Procédure : Définir une égalité de valeurs pour un type]] {{ :lang:csharp:struct:comment_definir_l_egalite_de_valeur_pour_un_type_-_guide_de_programmation_c_microsoft_docs_2020-04-29_6_46_01_pm_.html |Archive du 20/07/2015 le 29/04/2020}} [[https://docs.microsoft.com/fr-fr/visualstudio/code-quality/ca1815?view=vs-2019|CA1815 : Remplacez Equals et l'opérateur égal à dans les types valeur]] {{ :lang:csharp:struct:ca1815_remplacez_equals_et_l_operateur_egal_a_dans_les_types_valeur_-_visual_studio_microsoft_docs_2020-04-29_6_47_06_pm_.html |Archive du 11/03/2019 le 29/04/2020}}