В фреймворках классов коллекций я часто видел, что 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