Начнем с переопределения понятий, и я переопределяю методы Equals
и GetHashCode
.
В первую очередь я придумал этот "очень простой код":
internal class Person
{
public string name;
public int age;
public string lname;
public Person(string name, int age, string lname)
{
this.name = name;
this.age = age;
this.lname = lname;
}
public override bool Equals(object obj)
{
var person = obj as Person;
if (person != null)
{
return person.age == this.age && person.name == this.name && person.lname == this.lname;
}
return false;
}
public override int GetHashCode()
{
return this.age.GetHashCode() * this.name.GetHashCode() * this.lname.GetHashCode();
}
}
Пока это отлично работает, мой "со-разработчик" Mr.Resharper дал мне несколько советов:
- Неверные поля, на которые ссылаются в GetHashCode(). Предложения пришли в эту строку кода:
return this.age.GetHashCode() * this.name.GetHashCode() * this.lname.GetHashCode();
- Следует ли использовать GetHashCode только для свойств?