Переопределение 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();
}
}
}