哈希码是否存储在 SyncBlockIndex/SyncBlock

Does hash code is being stored in SyncBlockIndex/SyncBlock

.net 中的每个 object 都有 headers(SyncBlockIndexMethodTablePointer),当您调用 GetHashCode() 时,结果可以保存在 SyncBlockIndex 如果没有 链接 SyncBlock 到此 object,或者在 SyncBlock 中如果有。

当我们不覆盖 GetHashCode 方法时,哈希码是在 object 存在期间保存的,但是如果我们 return 动态哈希码(依赖object 的状态)?

我知道哈希码在 object 存在期间应该是相同的,问题的目的是了解哈希码是如何存储在 SyncBlockIndex 或 SyncBlock 中的。

how hash code will be storing in case we return dynamic hash code (dependent on object's state)?

如果哈希码是通过覆盖 GetHashCode 动态计算的,则不会存储在任何地方...

使用 SyncBlockIndex 作为对象的 "default" 哈希码是一个实现细节,不应依赖于框架之外的任何内容。