Читаем C# 4.0 полное руководство - 2011 полностью

2.    Организовать цикл, в котором вызывается методMoveNext. Повторять цикл до тех пор, пока методMoveNext возвращает логическое значениеtrue.

3.    Получить в цикле каждый элемент коллекции с помощью свойстваCurrent.

Ниже приведен пример программы, в которой реализуется данная процедура. В этой программе используется классArrayList,но общие принципы циклического обращения к элементам коллекции с помощью перечислителя остаются неизменными для коллекций любого типа, в том числе и обобщенных.

// Продемонстрировать применение перечислителя.

using System;

using System.Collections;

class EnumeratorDemo { static void Main {

ArrayList list = new ArrayList(1);

for(int i=0; i < 10; i++) list.Add(i);

// Использовать перечислитель для доступа к списку.

IEnumerator etr = list.GetEnumerator; while(etr.MoveNext )

Console.Write(etr.Current + " ") ;

Console.WriteLine ;

// Повторить перечисление списка.

etr .Reset ;

while(etr.MoveNext)

Console.Write(etr.Current + " ") ;

Console.WriteLine ;

}

}

Вот к какому результату приводит выполнение этой программы.

0123456789

0123456789

Вообще говоря, для циклического обращения к элементам коллекции циклforeachоказывается более удобным, чем перечислитель. Тем не менее перечислитель предоставляет больше возможностей для управления, поскольку его можно при желании всегда установить в исходное положение.

Применение перечислителя типа IDictionaryEnumerator

Если дляорганизации коллекции в виде словаря, например типаHashtable,реализуется необобщенный интерфейсIDictionary,то для циклического обращения к элементам такой коллекции следует использовать перечислитель типаIDictionaryEnumeratorвместо перечислителя типаIEnumerator.ИнтерфейсIDictionaryEnumeratorнаследует от интерфейсаIEnumeratorи имеет три дополнительных свойства. Первым из них является следующее свойство.

DictionaryEntry Entry { get; }

СвойствоEntryпозволяет получить пару "ключ-значение7' из перечислителя в форме структурыDictionaryEntry.Напомним, что в структуреDictionaryEntryопределяются два свойства,KeyиValue,с помощью которых можно получать доступ к ключу или значению, связанному с элементом коллекции. Ниже приведены два других свойства, определяемых в интерфейсеIDictionaryEnumerator.

object Key { get; } object Value { get; }

С помощью этих свойств осуществляется непосредственный доступ к ключу или значению.

Перейти на страницу:

Похожие книги

Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT