public override long hash() { int hash = 0; IDictionaryEnumerator en = m_map.GetEnumerator(); while (en.MoveNext()) { object key = en.Key; object val = en.Value; hash += key.GetHashCode() ^ (val == null ? 0 : val.GetHashCode()); } return hash; }