Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Реалізація інтерфейсу IComparer

Реферат Реалізація інтерфейсу IComparer





ся наведеної нижче процедури:

) Отримати нумератори, встановлюваний в початок колекції, викликавши для цієї колекції метод GetEnumerator (). [2]

) Організувати цикл, в якому викликається метод MoveNext (). Повторювати цикл до тих пір, поки метод MoveNext () повертає логічне знач?? ня true.

) Отримати в циклі кожен елемент колекції за допомогою властивості Current. [2]

Приклад використання перечіслітеля, запозичений з джерела [2] показаний в лістингу 8 (див. Додаток А).

Для циклічного звернення до елементів колекції цикл fоreach виявляється більш зручним, ніж Нумератор. Тим не менш, Нумератор надає більше можливостей для управління, оскільки його можна при бажанні завжди встановити у вихідне положення.


9.2 Застосування перечіслітеля типу IDictionaryEnumerator


Якщо для організації колекції у вигляді словника, наприклад типу Hashtable, реалізується неузагальнених інтерфейс IDictionary, то для циклічного звернення до елементів такої колекції слід використовувати Нумератор типу IDictionaryEnumerator замість перечіслітеля типу IEnumerator. Інтерфейс IDictionaryEnumerator успадковує від інтерфейсу IEnumerator і має три додаткових властивості. Першим з них є наведене нижче властивість. [3]

Entry {get;}


Властивість Entry дозволяє отримати пару ключ-значення з перечіслітеля у формі структури DictionaryEntry. Нагадаємо, що в структурі DictionaryEntry визначаються дві властивості, Key і Value, за допомогою яких можна отримувати доступ до ключа або значенням, пов'язаному з елементом колекції. Нижче наведено два інших властивості, що визначаються в інтерфейсі IDictionaryEnumerator

object Key {get; }

object Value {get; }


За допомогою цих властивостей здійснюється безпосередній доступ до ключа або значенням. [2]

Нумератор типу IDictionaryEnumerator використовується аналогічно звичайному перечіслітеля, за винятком того, що поточне значення в даному випадку виходить за допомогою властивостей Entry, Key або Value, а не властивості Current. Отже, придбавши Нумератор типу IDictionaryEnumerator, необхідно викликати метод MoveNext (), щоб отримати перший елемент колекції. А для отримання решти її елементів слід продовжити виклики методу MoveNext (). Цей метод повертає логічне значення false, коли в колекції більше немає жодного елемента. [2]


9.3 Реалізація інтерфейсів IEnumerable і IEnumerator


Для циклічного звернення до елементів колекції найчастіше простіше організувати цикл foreach, ніж користуватися безпосередньо методами інтерфейсу IEnumerator. Тим не менш, ясне уявлення про принцип дії подібних інтерфейсів важливо мати з ще однієї причини: якщо потрібно створити клас, що містить об'єкти, що перераховуються в циклі foreach, то в цьому класі слід реалізувати інтерфейси IEnumerator і IEnumerable.

Нижче представлений приклад реалізації інтерфейсу IEnumerator

bool MoveNext ()

{(index == ints.Length - 1)

{(); false;

} ++; true;

}

І приклад реалізації інтерфейсу Ienumerable

public IEnumerator GetEnumerator ()

{this;

}


Іншими словами, для того щоб звернутися до об'єкта визначається користувачем класу в циклі foreach, необхідно реалізувати інтерфейси IEnumerator і IEnumerable в їх узагальненої або неузагальнених формі.



10. Ітератори і оператор yield


Ітератор являє собою метод, в якому використовується ключове слово yield для перебору по колекції або масиву. [3]

Найбільш простий спосіб створення ітератора полягає в реалізації методу GetEnumerator для інтерфейсу IEnumerable, наприклад:

System.Collections.IEnumerator GetEnumerator ()

{(int i=0; i lt; 10; i ++)

{return i;

}

}


Наявність методу GetEnumerator створює тип перераховується типу і дозволяє використовувати оператор foreach statement. Якби Наведений вище метод був частиною визначення класу для ListClass, то можна було б використовувати foreach для класу наступним чином [5]


static void Main ()

{listClass1=new ListClass ();

(int i in listClass1)

{. Console.WriteLine (i);

}

}...


Назад | сторінка 16 з 21 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Збір трав'янистих рослин, комах ентомологичеськой колекції, тварин коле ...
  • Реферат на тему: Створення колекції одягу для промо-акцій "Завжди на зв'язку!" ...
  • Реферат на тему: Створення колекції моделей зачісок &Модний стиль&
  • Реферат на тему: Розробка колекції одягу
  • Реферат на тему: Ворожильні написи II тис. До н.е. Класифікація колекції