GetHashCode для класса, который содержит словарь
У меня есть класс, который мне нужно переопределить Equals
а также GetHashCode
методы. Класс содержит словарь с string
ключ и значение SomeOtherClass, которое, в свою очередь, также имеет свою собственную реализацию Equals
а также GetHashCode
,
public Dictionary<string, SomeOtherClass> MyDict { get; set; }
Моя попытка реализовать GetHashCode
public override int GetHashCode()
{
int hash = 17;
hash = hash * 23 + Id.GetHashCode();
hash = hash * 23 + .... //for other fields
foreach (var key in MyDict.Keys)
hash = hash * 23 + key.GetHashCode();
return hash;
}
Выглядел хорошо, по крайней мере, на моих тестовых примерах, но в настоящее время я думаю о лучшем подходе. Я также думаю, если (и когда) мне нужно принимать во внимание значения. И есть ли вообще лучший вариант?