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); } }
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); } }
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); } }