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)); }
public SetCollection difference(SetCollection set) { if (ReferenceEquals(set, this)) { return(Empty); } return(Make( SetStorage.Difference(_items, set._items) )); }
public FrozenSetCollection difference([NotNull] FrozenSetCollection set) { if (object.ReferenceEquals(set, this)) { return(Empty); } return(Make( SetStorage.Difference(_items, set._items) )); }
public SetCollection difference(object set) { return(Make( SetStorage.Difference(_items, SetStorage.GetItems(set)) )); }
public SetCollection difference(FrozenSetCollection set) { return(Make( SetStorage.Difference(_items, set._items) )); }