IEnumerator<Т> и IEnumerable - в чем разница и как использовать? - C#
Формулировка задачи:
Помогите, пожалуйста, разобраться с IEnumerator<Т> и IEnumerable<T>. В чем разница использования этих интерфейсов? Вернее, как их использовать? Спасибо
Решение задачи: «IEnumerator<Т> и IEnumerable - в чем разница и как использовать?»
textual
Листинг программы
class RandomCollection : IEnumerable<int>
{
public IEnumerator<int> GetEnumerator()
{
// Возвращаем новый экземпляр класса, реализующего IEnumerator
return new RandomEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
// Закрытый класс, реализующий доступ к отдельным элементам коллекции
class RandomEnumerator : IEnumerator<int>
{
private Random rand = new Random();
// Член интерфейса IEnumerator<T>, возвращает текущий элемент коллекции
public int Current
{
get
{
return rand.Next();
}
}
public void Dispose()
{
}
// Член интерфейса IEnumerator
object IEnumerator.Current
{
get { return Current; }
}
// Член интерфейса IEnumerator, переходит к следующему элементу, если таковой имеется
public bool MoveNext()
{
// Будем генерировать бесконечный цикл случайных чисел.
return true;
}
// Член интерфейса IEnumerator, сбрасывает итератор на начало коллекции
public void Reset()
{
// У нас нет начала и конца.
}
}
}