Set.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / Microsoft / Scripting / Compiler / Set.cs / 1305376 / Set.cs

                            /* **************************************************************************** 
 *
 * Copyright (c) Microsoft Corporation.
 *
 * This source code is subject to terms and conditions of the Microsoft Public License. A 
 * copy of the license can be found in the License.html file at the root of this distribution. If
 * you cannot locate the  Microsoft Public License, please send an email to 
 * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
 * by the terms of the Microsoft Public License.
 * 
 * You must not remove this notice, or any other, from this software.
 *
 *
 * ***************************************************************************/ 

using System.Collections; 
using System.Collections.Generic; 

// Note: can't move to Utils because name conflicts with System.Linq.Set 
namespace System.Linq.Expressions {

    /// 
    /// A simple hashset, built on Dictionary{K, V} 
    /// 
    internal sealed class Set : ICollection { 
        private readonly Dictionary _data; 

        internal Set() { 
            _data = new Dictionary();
        }

        internal Set(IEqualityComparer comparer) { 
            _data = new Dictionary(comparer);
        } 
 
        internal Set(IList list) {
            _data = new Dictionary(list.Count); 
            foreach (T t in list) {
                Add(t);
            }
        } 

        internal Set(IEnumerable list) { 
            _data = new Dictionary(); 
            foreach (T t in list) {
                Add(t); 
            }
        }

        internal Set(int capacity) { 
            _data = new Dictionary(capacity);
        } 
 
        public void Add(T item) {
            _data[item] = null; 
        }

        public void Clear() {
            _data.Clear(); 
        }
 
        public bool Contains(T item) { 
            return _data.ContainsKey(item);
        } 

        public void CopyTo(T[] array, int arrayIndex) {
            _data.Keys.CopyTo(array, arrayIndex);
        } 

        public int Count { 
            get { return _data.Count; } 
        }
 
        public bool IsReadOnly {
            get { return false; }
        }
 
        public bool Remove(T item) {
            return _data.Remove(item); 
        } 

        public IEnumerator GetEnumerator() { 
            return _data.Keys.GetEnumerator();
        }

        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { 
            return _data.Keys.GetEnumerator();
        } 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
/* **************************************************************************** 
 *
 * Copyright (c) Microsoft Corporation.
 *
 * This source code is subject to terms and conditions of the Microsoft Public License. A 
 * copy of the license can be found in the License.html file at the root of this distribution. If
 * you cannot locate the  Microsoft Public License, please send an email to 
 * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
 * by the terms of the Microsoft Public License.
 * 
 * You must not remove this notice, or any other, from this software.
 *
 *
 * ***************************************************************************/ 

using System.Collections; 
using System.Collections.Generic; 

// Note: can't move to Utils because name conflicts with System.Linq.Set 
namespace System.Linq.Expressions {

    /// 
    /// A simple hashset, built on Dictionary{K, V} 
    /// 
    internal sealed class Set : ICollection { 
        private readonly Dictionary _data; 

        internal Set() { 
            _data = new Dictionary();
        }

        internal Set(IEqualityComparer comparer) { 
            _data = new Dictionary(comparer);
        } 
 
        internal Set(IList list) {
            _data = new Dictionary(list.Count); 
            foreach (T t in list) {
                Add(t);
            }
        } 

        internal Set(IEnumerable list) { 
            _data = new Dictionary(); 
            foreach (T t in list) {
                Add(t); 
            }
        }

        internal Set(int capacity) { 
            _data = new Dictionary(capacity);
        } 
 
        public void Add(T item) {
            _data[item] = null; 
        }

        public void Clear() {
            _data.Clear(); 
        }
 
        public bool Contains(T item) { 
            return _data.ContainsKey(item);
        } 

        public void CopyTo(T[] array, int arrayIndex) {
            _data.Keys.CopyTo(array, arrayIndex);
        } 

        public int Count { 
            get { return _data.Count; } 
        }
 
        public bool IsReadOnly {
            get { return false; }
        }
 
        public bool Remove(T item) {
            return _data.Remove(item); 
        } 

        public IEnumerator GetEnumerator() { 
            return _data.Keys.GetEnumerator();
        }

        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { 
            return _data.Keys.GetEnumerator();
        } 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK