Почему так важно переопределить GetHashCode когда переопределяется Equals метод ?

Учитывая следующий класс

public class Foo
{
    public int FooId { get; set; }
    public string FooName { get; set; }

    public override bool Equals(object obj)
    {
        Foo fooItem = obj as Foo;

        return fooItem.FooId == this.FooId;
    }

    public override int GetHashCode()
    {
        // Which is preferred?

        return base.GetHashCode();

        //return this.FooId.GetHashCode();
    }
}

Я переопределил метод Equals, поскольку Foo представляет строки для Foos таблицы. Это предпочтительный метод для того, чтобы переопределить GetHashCode? Почему так важно это делать?

Найдено 9 ответов:

Why is it important to override GetHashCode when Equals method is overridden?

http://stackoverflow.com/questions/371328/why-is-it-important-to-override-gethashcode-when-equals-method-is-overridden

Посмотреть решение →