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;
}

Выглядел хорошо, по крайней мере, на моих тестовых примерах, но в настоящее время я думаю о лучшем подходе. Я также думаю, если (и когда) мне нужно принимать во внимание значения. И есть ли вообще лучший вариант?

0 ответов

Другие вопросы по тегам