Когда я должен отдельно реализовать ienumerator ? ⇐ C#

Место общения программистов C#
Anonymous
Когда я должен отдельно реализовать ienumerator ?

Сообщение Anonymous »

В фреймворках классов коллекций я часто видел, что ienumerator отдельно реализован как внутренний класс, и экземпляр его возвращается в методе getenumerator . < /p>

Теперь предположим, что я пишу свои собственные классы коллекций, которые будут иметь встроенную коллекцию, такую ​​как List < /code> или t [] < /code> как держатель внутри, скажем так: < /p>

public class SpecialCollection : IEnumerable
{
List list;

public SpecialCollection()
{

}

public IEnumerator GetEnumerator()
{
return list.GetEnumerator();

//or
return list.Where(x => some logic).GetEnumerator();

//or directly rely on yield keyword
yield return x; //etc
}
}
< /code>

Должен ли я написать свой собственный класс перечисления, или можно вернуть перечисление списка < /code> класса? Есть ли какие -либо обстоятельства, при которых я должен писать свой собственный класс перечисления? Если это не так важно или не имеет большого значения, почему каждый класс коллекций в BCL пишет свой собственный ienumerator < /code>?T[] items;
public IEnumerator GetEnumerator()
{
return new List.Enumerator(items);
}


Подробнее здесь: https://stackoverflow.com/questions/241 ... numeratort

Вернуться в «C#»