.net中的每个对象都有标题(SyncBlockIndex
和MethodTablePointer
),如果没有链接到该对象的SyncBlock GetHashCode()
,SyncBlockIndex
则在您调用该结果时可以将其保存在其中,如果有,则可以将其保存在SyncBlock中。
当我们不重写GetHashCode
方法时,哈希码是对象存在期间的保存,但是如果我们返回动态哈希码(取决于对象的状态),哈希码将如何存储?
我知道哈希码在对象存在期间应该是相同的,提出问题的目的是了解哈希码如何存储在SyncBlockIndex或SyncBlock中。
如果我们返回动态哈希码(取决于对象的状态),哈希码将如何存储?
如果哈希码是通过覆盖来动态计算的,GetHashCode
则不会存储在任何地方...
SyncBlockIndex
作为对象的“默认”哈希码的用法是实现细节,并且框架之外的任何内容均不应依赖于此。