fork(1) download
  1. using System;
  2.  
  3. public class Test
  4. {
  5. public static void Main()
  6. {
  7. // your code goes here
  8. }
  9. }
  10. public abstract class IComparableHelper<T>
  11. where T : IComparableHelper<T>
  12. {
  13. protected abstract bool Equals(T other);
  14. public abstract int GetHashCode();
  15. public override bool Equals(object obj)
  16. {
  17. if (ReferenceEquals(null, obj))
  18. return false;
  19. if (ReferenceEquals(this, obj))
  20. return true;
  21. if (obj.GetType() != this.GetType())
  22. return false;
  23. return Equals((T)obj);
  24. }
  25. public static bool operator ==(IComparableHelper<T> left, IComparableHelper<T> right)
  26. {
  27. return Equals(left, right);
  28. }
  29.  
  30. public static bool operator !=(IComparableHelper<T> left, IComparableHelper<T> right)
  31. {
  32. return !Equals(left, right);
  33. }
  34. }
  35. public class Person : IComparableHelper<Person>
  36. {
  37. public Person(string name, int age)
  38. {
  39. this.Name = name;
  40. this.Age = age;
  41. }
  42. public string Name { get; private set; }
  43. public int Age { get; private set; }
  44.  
  45. protected override bool Equals(Person other)
  46. {
  47. return string.Equals(this.Name, other.Name) && this.Age == other.Age;
  48. }
  49. public override int GetHashCode()
  50. {
  51. unchecked
  52. {
  53. return (this.Name.GetHashCode() * 397) ^ this.Age;
  54. }
  55. }
  56. }
Success #stdin #stdout 0.01s 33528KB
stdin
Standard input is empty
stdout
Standard output is empty