IEnumerableインタフェースの実装
5151 ワード
オブジェクトを実装するには、IEnumerableインタフェースを反復し、GetEnumeratorメソッドを実装する必要があります.簡単な例を示します
もちろん自分でIEnumeratorインタフェースを実現することもできます
public class SPEnumerable<T> : IEnumerable
{
private T[] array;
public SPEnumerable()
{
array = new T[0];
}
public void Add(T item)
{
Array.Resize<T>(ref array, array.Length + 1);
array[array.Length - 1] = item;
}
#region IEnumerable
IEnumerator IEnumerable.GetEnumerator()
{
foreach (T item in array)
{
yield return item;
}
}
#endregion
}
もちろん自分でIEnumeratorインタフェースを実現することもできます
public class SPEnumerable<T> : IEnumerable
{
private T[] array;
public SPEnumerable()
{
array = new T[0];
}
public void Add(T item)
{
Array.Resize<T>(ref array, array.Length + 1);
array[array.Length - 1] = item;
}
#region IEnumerable
IEnumerator IEnumerable.GetEnumerator()
{
return new SPEnumerator<T>(array);
}
#endregion
}
public class SPEnumerator<T> : IEnumerator
{
private int position = -1;
private T[] array;
public SPEnumerator(T[] array)
{
this.array = array;
}
#region IEnumerator
public object Current
{
get
{
return array[position];
}
}
public bool MoveNext()
{
position++;
return position < array.Length;
}
public void Reset()
{
position = -1;
}
#endregion
}