考虑以下记录:
TMyRecord = record
b: Boolean;
// 3 bytes of padding in here with default record alignment settings
i: Integer;
end;
我希望实施IEqualityComparer<TMyRecord>. 为此,我想调用TEqualityComparer<TMyRecord>.Construct. 这需要提供一个TEqualityComparison<TMyRecord>对我没有问题的。
但是,Construct也需要一个THasher<TMyRecord>,我想知道实现它的规范方法。该函数需要具有以下形式:
function MyRecordHasher(const Value: TMyRecord): Integer;
begin
Result := ???
end;
我希望我需要调用BobJenkinsHash记录值的两个字段,然后以某种方式将它们组合起来。这是正确的方法,我应该如何结合它们?
我不使用的原因TEqualityComparison<TMyRecord>.Default是它使用了CompareMem,因此由于记录的填充而将是不正确的。