Warum möchten Sie den Typ besonders in den Hashcode einbeziehen? Ich kann sehen, wie das nützlich sein könnte, wenn Sie viele verschiedenen Arten von Objekten mit der gleichen ID in der gleichen Karte haben, aber normalerweise würde ich nur
public override int GetHashCode()
{
return ID; // If ID is an int
// return ID.GetHashCode(); // otherwise
}
Hinweis verwenden, die Ideen der Gleichheit innerhalb Erbschaft heikel worden Hierarchien - ein weiterer Grund, die Komposition der Vererbung vorzuziehen. Müssen Sie sich darüber wirklich Sorgen machen? Wenn Sie Ihre Klasse abdichten kann, wird es der Gleichheitstest einfacher machen, wie Sie nur schreiben müssen: (. Sie können auch eine stark typisierte Methode haben wollen Equals und IEquatable implementieren)
public override bool Equals(object obj)
{
MyType other = obj as other;
return other != null && other.ID == ID;
}
Dank Für euch beide +1 für die versiegelte Idee. – boj