Exemple #1
0
            /// <summary>
            /// Retains only the elements in this set that are contained in the specified collection.
            /// </summary>
            /// <param name="c">Collection that defines the set of elements to be retained.</param>
            /// <returns><c>true</c> if this set changed as a result of this operation.</returns>
            public sealed override bool RetainAll(ICollection c)
            {
                Set temp;

                lock (c.SyncRoot)
                {
                    temp = new HybridSet(c);
                }
                lock (mSyncRoot)
                {
                    return(mBasisSet.RetainAll(temp));
                }
            }
        /// <summary>
        /// Retains only the elements in this set that are contained in the specified collection.
        /// </summary>
        /// <param name="c">Collection that defines the set of elements to be retained.</param>
        /// <returns><c>true</c> if this set changed as a result of this operation.</returns>
        public override bool RetainAll(ICollection c)
        {
            //Put data from C into a set so we can use the Contains() method.
            Set cSet = new HybridSet(c);

            //We are going to build a set of elements to remove.
            Set removeSet = new HybridSet();

            foreach (object o in this)
            {
                //If C does not contain O, then we need to remove O from our
                //set.  We can't do this while iterating through our set, so
                //we put it into RemoveSet for later.
                if (!cSet.Contains(o))
                {
                    removeSet.Add(o);
                }
            }

            return(this.RemoveAll(removeSet));
        }