/*
* 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;
}
}
}