Beispiel #1
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            else if (ReferenceEquals(this, obj))
            {
                return(true);
            }
            else if (obj.GetType() != typeof(EDNMap))
            {
                return(false);
            }
            else if (obj.GetHashCode() != this.GetHashCode())
            {
                return(false);
            }
            else
            {
                IEDNEnumerable e = (IEDNEnumerable)obj;

                if (e.Count() != this.Count())
                {
                    return(false);
                }

                var enum1 = e.GetEnumerator();
                while (enum1.MoveNext())
                {
                    var kvp = (KeyValuePair <object, object>)enum1.Current;
                    if (!this.ContainsKey(kvp.Key))
                    {
                        return(false);
                    }
                    else if (ReferenceEquals(this[kvp.Key], kvp.Value)) //check that values have same reference (including null)
                    {
                        continue;
                    }
                    else if (this[kvp.Key] != null && !this[kvp.Key].Equals(kvp.Value))
                    {
                        return(false);
                    }
                    else if (this[kvp.Key] == null && kvp.Value != null)
                    {
                        return(false);
                    }
                }

                return(true);
            }
        }
Beispiel #2
0
        public bool InternalEquals <T>(object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            else if (ReferenceEquals(this, obj))
            {
                return(true);
            }
            else if (obj.GetType() != typeof(T))
            {
                return(false);
            }
            else if (obj.GetHashCode() != this.GetHashCode())
            {
                return(false);
            }
            else
            {
                IEDNEnumerable e = (IEDNEnumerable)obj;

                if (e.Count() != this.Count())
                {
                    return(false);
                }

                var enum1 = e.GetEnumerator();
                var enum2 = this.GetEnumerator();

                while (enum1.MoveNext() && enum2.MoveNext())
                {
                    if (ReferenceEquals(enum1.Current, enum2.Current))
                    {
                        continue;
                    }
                    else if (enum1.Current != null && !enum1.Current.Equals(enum2.Current))
                    {
                        return(false);
                    }
                    else if (enum1.Current == null && enum2.Current != null)
                    {
                        return(false);
                    }
                }

                return(true);
            }
        }
Beispiel #3
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            else if (ReferenceEquals(this, obj))
            {
                return(true);
            }
            else if (obj.GetType() != typeof(EDNSet))
            {
                return(false);
            }
            else if (obj.GetHashCode() != this.GetHashCode())
            {
                return(false);
            }
            else
            {
                IEDNEnumerable e = (IEDNEnumerable)obj;

                if (e.Count() != this.Count())
                {
                    return(false);
                }

                var enum1 = e.GetEnumerator();
                while (enum1.MoveNext())
                {
                    if (!ednHashSet.Contains(enum1.Current))
                    {
                        return(false);
                    }
                }

                return(true);
            }
        }