public override bool Equals(object obj)
    {
        if (obj == null)
        {
            return(false);
        }
        DoubleUIntKeyTable <T> rhs = obj as DoubleUIntKeyTable <T>;

        if (rhs == null)
        {
            return(false);
        }
        if (GetCount() != rhs.GetCount())
        {
            return(false);
        }
        bool isEqual = true;

        ForEachDoubleKeyValue(delegate(uint key1, uint key2, T value1)
        {
            T val   = rhs.Get(key1, key2);
            isEqual = (isEqual && value1.Equals(val));
        });
        return(isEqual);
    }