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

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


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

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

6   голосов , оценка 4.167 из 5
Похожие ответы