Мы собираем специальный инструмент сериализации в наш проект и сталкиваемся с необходимостью однозначно идентифицировать каждый объект с помощью примитивного типа значений, который может использоваться как синоним его «идентичности». Значение не должно иметь никакого смысла или организации, а просто потому, что оно является уникальным и постоянным, по крайней мере, на протяжении процедуры сериализации. В идеале .net внутренне поддерживал бы уникальный и постоянный идентификатор объекта, который мы могли бы хранить как идентификатор объекта. Я знаю, что у каждого объекта есть метод GetHashCode
, но мы не уверены в глобальной уникальности ценности. Другим критерием доступа к ID является то, что этот метод должен быть очень эффективным.Возможно ли получить эквивалент «адреса памяти» объекта .net?
Я посмотрел на GetHashCode
, сборщик мусора и сортировку идей, еще не достиг чего-то твердого.
Является ли это основанным на Object> Integer словаре? –
На самом деле это похоже на Hashtable, означает ли это, что метод 'GetHashCode' объекта в корне несет ответственность за уникальность идентификатора? –
Дальнейшие исследования, согласно http://stackoverflow.com/questions/7789430/objectidgenerator-implementation, 'ObjectIDGenerator' использует метод' RuntimeHelpers.GetHashCode (Object) ', который на http://msdn.microsoft.com/en -us/library/system.runtime.serialization.objectidgenerator.aspx использует «HashTable», а затем http://msdn.microsoft.com/en-us/library/system.runtime.serialization.objectidgenerator.aspx использует Метод Object.GetHashCode', который сам по себе http://stackoverflow.com/questions/7458139/net-is-type-gethashcode-guaranteed-to-be-unique не обязательно уникален. –