【发布时间】:2010-08-03 04:54:29
【问题描述】:
可能重复:
How does Object.GetHashCode work when the GC moves an object?
.NET 中的垃圾收集器移动对象,因此对象的地址不稳定。 Object的GetHashCode()方法是如何实现的?
谢谢!
【问题讨论】:
-
GetHashCode 方法与对象的位置无关。它也是一个虚方法,所以每种类型都可以根据需要定义。
可能重复:
How does Object.GetHashCode work when the GC moves an object?
.NET 中的垃圾收集器移动对象,因此对象的地址不稳定。 Object的GetHashCode()方法是如何实现的?
谢谢!
【问题讨论】:
垃圾收集器为每个对象分配一个唯一的 ID,这是默认的 GetHashCode 实现使用的,而不是内存位置。
编辑实际上比这要复杂一些。不想误导任何人,所以你们应该更喜欢Jon Skeet's answer on the topic。
【讨论】:
GetHashCode 可用的不可变“对象标识符”(有一点可以识别所代表的内容)。如果同步块字包含同步块索引,则同步块内的字将包含上述对象标识符。