叠代器就是用來遍歷集合的。
與叠代器有關的接口,壹個是IEnumerable(IEnumerable<T>),另壹個是IEnumerator(IEnumerator<T>)。IEnumerable中有GetEnumerator()方法,返回的值為IEnumerator接口,用於取得集合的叠代器。IEnumerator接口中有1.MoveNext()方法,返回值為布爾類型,用於判斷集合中是否還存在元素;2.Current方法,用於取得集合中的元素;3.Reset方法,將叠代器置於初始位置,不用管。
實際使用的時候,集合需要實現IEnumerable接口,這樣就能通過GetEnumerator()取得叠代器enumerator。然後通過While(enumerator.MoveNext()){var element=enumerator.Current;}的方式遍歷集合了。至於方法的實現,就要看具體情況了,比如:。
public?class?DemoAggregation:IEnumerable{
private?object[]?array;
public?DemoAggregation(object[]?array)
{
this.array?=?array;
}
public?IEnumerator?GetEnumerator()
{
return?new?DemoEnumerator(array);
}
//其他與集合有關的代碼
}
public?class?DemoEnumerator:IEnumerator
{
private?int?position;
private?object[]?array;
public?DemoEnumerator(object[]?array)
{
this.array?=?array;
}
public?bool?MoveNext()
{
if?(position?>=?array.Length?||?array[position]?==?null)
{
return?false;
}
else
{
return?true;
}
}
public?void?Reset()
{
position?=?0;
}
public?object?Current
{
get
{
object?result?=?array[position];
position++;
return?result;
}?
}
}