Одна из возможностей (хотя я не могу сказать, что рекомендую это по целому ряду причин) - использовать .net-эквивалент функции VB6 ObjPtr.По сути, вы закрепляете объект в памяти, а затем можете получить адрес памяти для этого объекта (который гарантированно будет уникальным).
см. Эту запись
http://forums.devx.com/showthread.php?t=122407
С другой стороны, если бы мне действительно нужен уникальный идентификатор для объекта, я бы, вероятно, расширил объект и добавил бы свойство «ObjectID» только для чтения, которое всегда возвращает сгенерированный GUID для этого конкретного экземпляра объекта.
Если эти идентификаторы нигде не были сохранены, вы также можете создать одноэлементный объект «IDGenerator», который просто раздает инкрементные целочисленные значения, и использовать эти int в качестве идентификаторов для ваших объектов.Но опять же, вы не захотите сохранять эти int-идентификаторы, потому что они не будут уникальными для всех ваших приложений.Кроме того, в зависимости от того, сколько объектов вы создаете, вам может потребоваться сделать его длинным целым, а не просто целым.