Что не так с определением оператора ==, но без определения Equals() или GetHashCode()?

Для приведенного ниже кода

public struct Person
{
    public int ID;
    public static bool operator ==(Person a, Person b) { return  a.Equals(b); }
    public static bool operator !=(Person a, Person b) { return !a.Equals(b); }
}

Почему компилятор выдает мне эти предупреждения?
Что не так с тем, что не определены методы ниже?

warning CS0660: 'Person' defines operator == or operator != but
    does not override Object.Equals(object o)

warning CS0661: 'Person' defines operator == or operator != but
    does not override Object.GetHashCode()
20
задан Mehrdad 28 May 2012 в 21:59
поделиться