.net 是否有可能得到';内存地址';net对象的名称?

.net 是否有可能得到';内存地址';net对象的名称?,.net,memory-address,object-identity,.net,Memory Address,Object Identity,我们正在将一个自定义序列化工具应用到我们的项目中,并且遇到了一种需要,即通过一个可以用作其“标识”同义词的基本值类型来唯一地标识每个对象。该值不需要任何意义或组织,只需要它是唯一的,并且至少在序列化例程的持续时间内是持久的。理想情况下,.net会在内部维护一个唯一且持久的对象ID,我们可以将其存储为对象的ID。我知道每个对象都有一个GetHashCode方法,但我们对该值的全局唯一性没有信心。访问此类ID的另一个标准是该方法需要非常高效 我已经研究了垃圾收集器和思想编组的GetHashCode,

我们正在将一个自定义序列化工具应用到我们的项目中,并且遇到了一种需要,即通过一个可以用作其“标识”同义词的基本值类型来唯一地标识每个对象。该值不需要任何意义或组织,只需要它是唯一的,并且至少在序列化例程的持续时间内是持久的。理想情况下,.net会在内部维护一个唯一且持久的对象ID,我们可以将其存储为对象的ID。我知道每个对象都有一个
GetHashCode
方法,但我们对该值的全局唯一性没有信心。访问此类ID的另一个标准是该方法需要非常高效


我已经研究了垃圾收集器和思想编组的
GetHashCode
,但还没有得出任何可靠的结论。

您正在寻找的,它正是您想要做的。

这是基于对象>整数字典吗?实际上它似乎是基于哈希表,这是否意味着对象的
GetHashCode
方法从根本上负责ID唯一性?进一步研究,根据
ObjectedGenerator
使用
RuntimeHelpers.GetHashCode(object)
方法,其中by使用的是
HashTable
,然后by使用的是
对象。GetHashCode
方法本身并不一定是唯一的。