Переопределение 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д