public override sealed bool Equals(object obj) { if (obj == null || !Delegate.InternalEqualTypes((object)this, obj)) { return(false); } MulticastDelegate d = obj as MulticastDelegate; if (d == null) { return(false); } if (this._invocationCount != (IntPtr)0) { if (this.InvocationListLogicallyNull()) { if (this.IsUnmanagedFunctionPtr()) { if (!d.IsUnmanagedFunctionPtr()) { return(false); } return(Delegate.CompareUnmanagedFunctionPtrs((Delegate)this, (Delegate)d)); } if (d._invocationList is Delegate) { return(this.Equals(d._invocationList)); } return(base.Equals(obj)); } if (this._invocationList is Delegate) { return(this._invocationList.Equals(obj)); } return(this.InvocationListEquals(d)); } if (!this.InvocationListLogicallyNull()) { if (!this._invocationList.Equals(d._invocationList)) { return(false); } return(base.Equals((object)d)); } if (d._invocationList is Delegate) { return(this.Equals(d._invocationList)); } return(base.Equals((object)d)); }
public sealed override bool Equals(object obj) { if (obj == null || !Delegate.InternalEqualTypes(this, obj)) { return(false); } MulticastDelegate multicastDelegate = obj as MulticastDelegate; if (multicastDelegate == null) { return(false); } if (this._invocationCount != (IntPtr)0) { if (this.InvocationListLogicallyNull()) { if (this.IsUnmanagedFunctionPtr()) { return(multicastDelegate.IsUnmanagedFunctionPtr() && Delegate.CompareUnmanagedFunctionPtrs(this, multicastDelegate)); } if (multicastDelegate._invocationList is Delegate) { return(this.Equals(multicastDelegate._invocationList)); } return(base.Equals(obj)); } else { if (this._invocationList is Delegate) { return(this._invocationList.Equals(obj)); } return(this.InvocationListEquals(multicastDelegate)); } } else { if (!this.InvocationListLogicallyNull()) { return(this._invocationList.Equals(multicastDelegate._invocationList) && base.Equals(multicastDelegate)); } if (multicastDelegate._invocationList is Delegate) { return(this.Equals(multicastDelegate._invocationList)); } return(base.Equals(multicastDelegate)); } }
public sealed override bool Equals(object obj) { if ((obj == null) || !Delegate.InternalEqualTypes(this, obj)) { return(false); } MulticastDelegate delegate2 = obj as MulticastDelegate; if (delegate2 == null) { return(false); } if (this._invocationCount != IntPtr.Zero) { if (this.InvocationListLogicallyNull()) { if (!this.IsUnmanagedFunctionPtr()) { return(base.Equals(obj)); } if (!delegate2.IsUnmanagedFunctionPtr()) { return(false); } return(Delegate.CompareUnmanagedFunctionPtrs(this, delegate2)); } if (this._invocationList is Delegate) { return(this._invocationList.Equals(obj)); } return(this.InvocationListEquals(delegate2)); } if (!this.InvocationListLogicallyNull()) { if (!this._invocationList.Equals(delegate2._invocationList)) { return(false); } return(base.Equals(delegate2)); } if (((delegate2._invocationCount != IntPtr.Zero) || !this.InvocationListLogicallyNull()) && (delegate2._invocationList is Delegate)) { return((delegate2._invocationList as Delegate).Equals(this)); } return(base.Equals(delegate2)); }