По умолчанию ссылочные типы сравниваются по их ссылкам, если только метод Equals для этого типа не был переопределен.
Поскольку вы хотите использовать ссылочный тип в качестве ключа в таблице has, вам также следует переопределить метод GetHashCode, чтобы «равные» объекты создавали одинаковый хеш-код.
Хеш-таблица хранит объекты путем вычисления хеша с использованием метода GetHashCode, и любые последующие «обращения» рассчитываются с использованием этого. Вы можете сделать это, основав значение, возвращаемое GetHasshCode, на каждом из свойств объекта, в вашем случае на каждом из байтов в массиве. Это пример того, где я использовал его, вы также можете сделать это в IEqualityComparer, который вы можете использовать в своей хеш-таблице:
public override int GetHashCode() {
int hash = 17;
hash = hash * 23 + DrillDownLevel.GetHashCode();
hash = hash * 23 + Year.GetHashCode();
if (Month.HasValue) {
hash = hash * 23 + Month.Value.GetHashCode();
}
if (Week.HasValue) {
hash = hash * 23 + .Week.Value.GetHashCode();
}
if (Day.HasValue) {
hash = hash * 23 + obj.Day.Value.GetHashCode();
}
return hash;
}