Переопределение GetHashCode - C#
Формулировка задачи:
Нужно переопределить метод GetHashCode() так, чтобы для объектов с совпадающими данными возвращать равные значения хэш кодов. Не могу понять какие 2 объекта нужно сравнивать. Вот переопределил == != и Equals. А вот с GetHashCode() затрудняюсь
public class Person { private string Name; private string Surname; private System.DateTime Date; public Person(string name, string surname, System.DateTime date) { Name = name; Surname = surname; Date = date; } public Person() { Name = ""; Surname = ""; Date = System.DateTime.Today; } public override bool Equals(Object obj) { Person obj1 = obj as Person; //for access to PErson string obj2 = obj1.Name + obj1.Surname + obj1.Date; //for compare if (this.Name+this.Surname+this.Date == obj2) return true; return false; } public static bool operator == (Person lhs, Person rhs) { if (lhs.Name + lhs.Surname + lhs.Date == rhs.Name + rhs.Surname + rhs.Date) return true; return false; } public static bool operator !=(Person lhs, Person rhs) { if (lhs.Name + lhs.Surname + lhs.Date != rhs.Name + rhs.Surname + rhs.Date) return true; return false; } }
Решение задачи: «Переопределение GetHashCode»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication23 { class Program { static void Main(string[] args) { } } class Person { public string Name { get; set; } public int Age { get; set; } public override string ToString() { return string.Format("Name: {0}, Age: {1}", Name, Age); } public override bool Equals(object obj) { return this.ToString().CompareTo(obj.ToString()) == 0; } public override int GetHashCode() { return this.ToString().GetHashCode(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д