There is a contract between Equals(object) and GetHashCode(): If two objects are equal according to the
Equals(object) method, then calling GetHashCode() on each of them must yield the same result. If this is not the case, many
collections won’t handle class instances correctly.
In order to comply with the contract, Equals(object) and GetHashCode() should be either both inherited, or both
overridden.
class MyClass // Noncompliant - should also override "GetHashCode()"
{
public override bool Equals(object obj)
{
// ...
}
}
class MyClass
{
public override bool Equals(object obj)
{
// ...
}
public override int GetHashCode()
{
// ...
}
}