當前位置:成語大全網 - 新華字典 - 如何理解C#叠代器方法

如何理解C#叠代器方法

叠代器就是用來遍歷集合的。

與叠代器有關的接口,壹個是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;

}?

}

}