/* * 2013-03-08 toAtWork * HashSet implementation for .net 2.0. */ using System.Collections; using System.Collections.Generic; namespace System.Windows.Forms { /// /// There is no HashSet<T> available in .net 2.0. /// /// Der Typ des Sets [Serializable] public class Set : ICollection, IEnumerable, IEnumerable { private readonly Dictionary _items = new Dictionary(); #region ICollection public void Add(T item) { if (item == null) return; _items[item] = null; } public void Clear() { _items.Clear(); } public bool Contains(T item) { if (item == null) return false; return _items.ContainsKey(item); } public void CopyTo(T[] array, int arrayIndex) { _items.Keys.CopyTo(array, arrayIndex); } public int Count => _items.Count; public bool IsReadOnly => false; public bool Remove(T item) { if (item == null) return false; return _items.Remove(item); } public IEnumerator GetEnumerator() { return _items.Keys.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return _items.Keys.GetEnumerator(); } #endregion public void AddRange(IEnumerable items) { if (items == null) return; foreach (T item in items) Add(item); } public T[] ToArray() { T[] array = new T[_items.Count]; CopyTo(array, 0); return array; } } }