An IDictionary where keys are compared by object identity, rather than equals.
            
            All external users of this class need to have no knowledge of the IdentityKey - it is all
            hidden by this class.
            
Namespace: NHibernate.UtilAssembly: NHibernate (in NHibernate.dll) Version: 3.2.0.4000 (3.2.0.4000)
Syntax
| C# | 
|---|
[SerializableAttribute] public sealed class IdentityMap : IDictionary, ICollection, IEnumerable  | 
| Visual Basic | 
|---|
<SerializableAttribute> _ Public NotInheritable Class IdentityMap _ Implements IDictionary, ICollection, IEnumerable  | 
| Visual C++ | 
|---|
[SerializableAttribute] public ref class IdentityMap sealed : IDictionary, ICollection, IEnumerable  | 
Remarks
Do NOT use a System.Value type as the key for this Hashtable - only classes. See the google thread about why using System.Value is a bad thing.
If I understand it correctly, the first call to get an object defined by a DateTime("2003-01-01") would box the DateTime and return the identity key for the box. If you were to get that Key and unbox it into a DateTime struct, then the next time you passed it in as the Key the IdentityMap would box it again (into a different box) and it would have a different IdentityKey - so you would not get the same value for the same DateTime value.