【发布时间】:2011-05-13 19:15:53
【问题描述】:
我有一个基于两个 uint 值覆盖 Equals 的类。因为我已经覆盖了 Equals,所以我需要覆盖 GetHashCode。
一个 uint 值代表一个永远不应该有重复的 id。它不一定是自动递增的 int 值,但在大多数情况下应该是。第二个 uint 值表示对象的类型字段。
仅使用 ID 字段就足够了。但在某些情况下它可能有点限制,这就是我想结合 ID 和类型的原因。
我想将这两个数字相加,然后使用 XOR 组合高位和低位。
还有其他想法吗?
【问题讨论】:
-
uint ID字段真的能占据uint的整个范围吗? -
但在某些情况下可能会有点限制 - 您能否详细解释一下仅使用 ID 字段对您来说限制过多的情况?
-
如果我有多个会话对不同的实体开放,那么可以使用相同的 ID。然而,我的班级应该不关心这个会话,所以我不想考虑它,因为那时我有泄漏的实现。所以我认为跨不同会话的对象具有完全相同的类型和 ID 的可能性非常小。但也许我不应该在意。他们可以编写自定义比较器来考虑这一点。也许我应该只使用 ID。