Переопределение GetHashCode - C#

Узнай цену своей работы

Формулировка задачи:

Нужно переопределить метод GetHashCode() так, чтобы для объектов с совпадающими данными возвращать равные значения хэш кодов. Не могу понять какие 2 объекта нужно сравнивать. Вот переопределил == != и Equals. А вот с GetHashCode() затрудняюсь
Листинг программы
  1. public class Person
  2. {
  3. private string Name;
  4. private string Surname;
  5. private System.DateTime Date;
  6. public Person(string name, string surname, System.DateTime date)
  7. {
  8. Name = name;
  9. Surname = surname;
  10. Date = date;
  11. }
  12. public Person()
  13. {
  14. Name = "";
  15. Surname = "";
  16. Date = System.DateTime.Today;
  17. }
  18. public override bool Equals(Object obj)
  19. {
  20. Person obj1 = obj as Person; //for access to PErson
  21. string obj2 = obj1.Name + obj1.Surname + obj1.Date; //for compare
  22. if (this.Name+this.Surname+this.Date == obj2) return true;
  23. return false;
  24. }
  25. public static bool operator == (Person lhs, Person rhs)
  26. {
  27. if (lhs.Name + lhs.Surname + lhs.Date == rhs.Name + rhs.Surname + rhs.Date) return true;
  28. return false;
  29. }
  30. public static bool operator !=(Person lhs, Person rhs)
  31. {
  32. if (lhs.Name + lhs.Surname + lhs.Date != rhs.Name + rhs.Surname + rhs.Date) return true;
  33. return false;
  34. }
  35. }

Решение задачи: «Переопределение GetHashCode»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication23 {
  7.     class Program {
  8.         static void Main(string[] args) {
  9.            
  10.         }
  11.     }
  12.     class Person {
  13.         public string Name { get; set; }
  14.         public int Age { get; set; }
  15.  
  16.         public override string ToString() {
  17.             return string.Format("Name: {0}, Age: {1}", Name, Age);
  18.         }
  19.         public override bool Equals(object obj) {
  20.             return this.ToString().CompareTo(obj.ToString()) == 0;
  21.         }
  22.         public override int GetHashCode() {
  23.             return this.ToString().GetHashCode();
  24.         }
  25.     }
  26. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы