У меня есть класс, который содержит следующие два свойства:
public int Id { get; private set; }
public T[] Values { get; private set; }
Я сделал это IEquatable<T>
и переопределит object.Equals
следующим образом:
public override bool Equals(object obj)
{
return Equals(obj as SimpleTableRow<T>);
}
public bool Equals(SimpleTableRow<T> other)
{
// Check for null
if(ReferenceEquals(other, null))
return false;
// Check for same reference
if(ReferenceEquals(this, other))
return true;
// Check for same Id and same Values
return Id == other.Id && Values.SequenceEqual(other.Values);
}
При переопределении object.Equals
я также должен переопределить GetHashCode
. Но какой код я должен реализовать? Как создать хэш-код из общего массива? И как мне объединить его с целым числом Id
?
public override int GetHashCode()
{
return // What?
}