lang:csharp:struct
IEquatable
struct doit implémenter IEquatable pour améliorer les performances.
public struct Point : IEquatable<Point> { 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); } }
Procédure : Définir une égalité de valeurs pour un type Archive du 20/07/2015 le 29/04/2020
CA1815 : Remplacez Equals et l'opérateur égal à dans les types valeur Archive du 11/03/2019 le 29/04/2020
lang/csharp/struct.txt · Dernière modification : 2020/04/29 18:48 de root