They must handle case-sensitivity identically in both the GetHashCode() and Equals() methods.
Key objects must be immutable for the duration they are used within a HashTable.
Get HashCode() must be overridden to provide the same result, given the same parameters, regardless of reference equality unless the HashTable constructor is provided with an IEqualityComparer parameter.
Each Element in a HashTable is stored as a Key/Value pair of the type System.Collections.DictionaryElement
All of the above
Useful resources, Hashtable