public class Collection<T> : IEnumerable,IEnumerator
{
private T[] array;
public int position;
public Collection()
{
position = -1;
}
#region indexer
/// <summary>
/// Array
/// </summary>
/// <param name="idx"></param>
/// <returns></returns>
public T this[int idx]
{
get
{
return array[idx];
}
set
{
array[idx] = value;
}
}
/// <summary>
/// Count
/// </summary>
public int Count
{
get
{
if (array == null)
{
return 0;
}
return array.Length;
}
}
/// <summary>
/// Add
/// </summary>
/// <param name="obj">obj</param>
public void Add(T obj)
{
if (array == null)
{
array = new T[1];
array[0] = obj;
}
else
{
T[] aryTemp = new T[array.Length + 1];
array.CopyTo(aryTemp, 0);
aryTemp[array.Length] = obj;
array = aryTemp;
GC.Collect();
}
this.Reset();
}
#endregion
#region Interface: IEnumerable
public IEnumerator GetEnumerator()
{
return (IEnumerator)this;
}
#endregion
#region Interface: IEnumerator
public object Current
{
get
{
if (array == null) return null;
return array[position];
}
}
public bool MoveNext()
{
if (array == null) return false;
position++;
if (position < array.Length)
{
return true;
}
else
{
this.Reset();
return false;
}
}
public void Reset()
{
position = -1;
}
#endregion
public void Clear()
{
array = null;
this.Reset();
GC.Collect();
}
}