private static bool NotEqualsExtracted(WeakNeedle <T> left, WeakNeedle <T> right) { if (ReferenceEquals(left, null)) { return(!ReferenceEquals(right, null)); } return(ReferenceEquals(right, null) || NotEqualsExtractedExtracted(left, right)); }
private static bool NotEqualsExtractedExtracted(WeakNeedle <T> left, WeakNeedle <T> right) { var leftValue = left.Value; if (left.IsAlive) { var rightValue = right.Value; return(!right.IsAlive || !EqualityComparer <T> .Default.Equals(leftValue, rightValue)); } return(right.IsAlive); }
public bool Equals(WeakNeedle <T> other) { return(!ReferenceEquals(other, null) && EqualsExtractedExtracted(this, other)); }