Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Main()
- {
- Area a1 = new Area(3, 2);
- Area a2 = new Area(4, 5);
- Area a3 = new Area(3, 2);
- // Comprobaciones de igualdad:
- Console.WriteLine(a1 == a2); // False
- Console.WriteLine(a1 == a3); // True
- Console.WriteLine(a3.Equals((object)a1)); // True
- Console.WriteLine(a1.Equals((object)a3)); // True
- }
- // Define other methods and classes here
- public struct Area : IEquatable<Area>
- {
- public readonly int Medida1;
- public readonly int Medida2;
- public Area(int m1, int m2)
- {
- Medida1 = Math.Min(m1, m2);
- Medida2 = Math.Max(m1, m2);
- }
- // Sobrescribe el método Object.Equals:
- public override bool Equals(object otroObj)
- {
- // Primero comprueba si el objeto encapsulado en
- // `otroObj`
- if (!(otroObj is Area))
- {
- return false;
- }
- // Invoca el método Equals que implementa
- // esta clase:
- return Equals((Area) otroObj);
- }
- // Implementación de IEquatable<Area>:
- public bool Equals(Area otroObj)
- {
- return Medida1 == otroObj.Medida1
- && Medida2 == otroObj.Medida2;
- }
- public override int GetHashCode()
- {
- return Medida2 * 31 + Medida1;
- }
- // Sobrecarga el operador == para comprobar si dos
- // objetos Area son iguales:
- public static bool operator == (Area a1, Area a2)
- {
- return a1.Equals(a2);
- }
- // Sobrecarga el operador != para comprobar si dos
- // objetos Area son distintos:
- public static bool operator != (Area a1, Area a2)
- {
- return !a1.Equals(a2);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement