Example #1
0
 public ImmutableArray <T> Remove(T item)
 {
     using (Lock.Enter())
     {
         return(DistinctSet.Remove(item)
                         ? DistinctInOrderArrayStorage = DistinctInOrderArrayStorage.Remove(item)
                         : DistinctInOrderArrayStorage
                );
     }
 }
Example #2
0
        public ImmutableArray <T> AddRange(IEnumerable <T> items)
        {
            ImmutableArray <T> arr = (items ?? Enumerable.Empty <T>()).ToImmutableArray();

            using (Lock.Enter())
            {
                if (arr.IsEmpty)
                {
                    return(DistinctInOrderArrayStorage);
                }

                arr
                .Where(DistinctSet.Add)
                .ToImmutableArray()
                .AssignOut(out arr)
                ;

                return(arr.IsEmpty
                                ? DistinctInOrderArrayStorage
                                : DistinctInOrderArrayStorage = DistinctInOrderArrayStorage.AddRange(arr)
                       );
            }
        }