public void difference_update(SetCollection set) { if (object.ReferenceEquals(set, this)) { _items.Clear(); return; } lock (_items) { _items.DifferenceUpdate(set._items); } }
public SetCollection difference([NotNull] params object[] /*!*/ sets) { Debug.Assert(sets != null); if (sets.Length == 0) { return(copy()); } SetStorage res = _items; foreach (object set in sets) { if (ReferenceEquals(set, this)) { return(Empty); } SetStorage items = SetStorage.GetItems(set); if (ReferenceEquals(res, _items)) { res = SetStorage.Difference(_items, items); } else { res.DifferenceUpdate(items); } } Debug.Assert(!ReferenceEquals(res, _items)); return(Make(res)); }