Enumerator lt; int gt; etr=arr.GetEnumerator (); (etr.MoveNext ()). Write (etr.Current + t );
Console.WriteLine ( n Повторний виклик перечіслітеля: n );
//Скинемо значення і знову ісользуем Нумератор
//для доступу до коллекціі.Reset ();
while (etr.MoveNext ()). Write (etr.Current + t );
Console.ReadLine ();
}
}
}
Результат роботи програми з використанням перечіслітеля представлений на малюнку А.7
Малюнок А.7 - Використання перечіслітеля
Лістинг 9 - Приклад застосування інтерфейсів IEnumerator і IEnumerable
System; System.Collections; ConsoleApplication1
{MyInt: IEnumerable, IEnumerator
{[] ints={12, 13, 1, 4}; index=- 1;
//Реалізуємо інтерейса IEnumerableIEnumerator GetEnumerator ()
{this;
}
//Реалізуємо інтерфейс IEnumeratorbool MoveNext ()
{(index == ints.Length - 1)
{(); false;
} ++; true;
} void Reset ()
{= - 1;
} object Current
{
{ints [index];
}
}
} Program
{void Main ()
{mi=new MyInt (); (int i in mi) .Write (i + t ) ;. ReadLine ();
}
}
}
Результат роботи програми з використанням інтерфейсів IEnumerator і Ienumerable представлений на малюнку А.8
Малюнок А.8 - Використання інтерфейсів IEnumerator і Ienumerable
Лістинг 10 - Приклад використання іменованого ітератора
Book
{Book (string name)
{. Name=name;
} string Name {get; set; }
} Library: IEnumerable
{Book [] books;
Library ()
{= new Book [] {new Book ( Батьки і діти ), new Book ( Війна і мир ), Book ( Євгеній Онєгін )};
} int Length
{{return books.Length; }
} Book this [int index]
{
{books [index];
}
{
books [index]=value;
}
}
public IEnumerable GetBooks (int max)
{(int i=0; i lt; max; i ++)
{(i == books.Length)
{break;
}
{return books [i];
}
}
}
}