Outils pour utilisateurs

Outils du site


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