Advertisement
Fhernd

Area.cs

Jul 29th, 2016
18,485
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.70 KB | None | 0 0
  1. void Main()
  2. {
  3.     Area a1 = new Area(3, 2);
  4.     Area a2 = new Area(4, 5);
  5.     Area a3 = new Area(3, 2);
  6.    
  7.     // Comprobaciones de igualdad:
  8.     Console.WriteLine(a1 == a2);                // False
  9.     Console.WriteLine(a1 == a3);                // True
  10.     Console.WriteLine(a3.Equals((object)a1));    // True
  11.     Console.WriteLine(a1.Equals((object)a3));    // True
  12. }
  13.  
  14. // Define other methods and classes here
  15. public struct Area : IEquatable<Area>
  16. {
  17.     public readonly int Medida1;
  18.     public readonly int Medida2;
  19.  
  20.     public Area(int m1, int m2)
  21.     {
  22.         Medida1 = Math.Min(m1, m2);
  23.         Medida2 = Math.Max(m1, m2);
  24.     }
  25.  
  26.     // Sobrescribe el método Object.Equals:
  27.     public override bool Equals(object otroObj)
  28.     {
  29.         // Primero comprueba si el objeto encapsulado en
  30.         // `otroObj`
  31.         if (!(otroObj is Area))
  32.         {
  33.             return false;
  34.         }
  35.        
  36.         // Invoca el método Equals que implementa
  37.         // esta clase:
  38.         return Equals((Area) otroObj);
  39.     }
  40.  
  41.     // Implementación de IEquatable<Area>:
  42.     public bool Equals(Area otroObj)
  43.     {
  44.         return Medida1 == otroObj.Medida1    
  45.             && Medida2 == otroObj.Medida2;
  46.     }
  47.  
  48.     public override int GetHashCode()
  49.     {
  50.         return Medida2 * 31 + Medida1;
  51.     }
  52.  
  53.     // Sobrecarga el operador == para comprobar si dos
  54.     // objetos Area son iguales:
  55.     public static bool operator == (Area a1, Area a2)
  56.     {
  57.         return a1.Equals(a2);
  58.     }
  59.  
  60.     // Sobrecarga el operador != para comprobar si dos
  61.     // objetos Area son distintos:
  62.     public static bool operator != (Area a1, Area a2)
  63.     {
  64.         return !a1.Equals(a2);
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement