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

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






Оператор foreach викликає ListClass.GetEnumerator () і використовує повернутий Нумератор для ітерації значень. [5]

Крім того, можна використовувати іменовані ітератори на підтримку різних можливостей перебору однієї і тієї ж колекції даних. [5]

Наприклад, можна було б надати один ітератор, який повертає елементи за збільшенням, а інший ітератора, який повертає елементи спаданням. Ітератор може також мати параметри, що дозволяють клієнтам управляти всім поведінкою ітератора або його частину. Наступний итератор реалізує інтерфейс IEnumerable за допомогою іменованого ітератора SampleIterator [5]

System.Collections.IEnumerable SampleIterator (int start, int end)

{(int i=start; i lt;=end; i ++)

{return i;

}

}


Іменований итератор викликається наступним чином. [5]

test=new ListClass (); (int n in test.SampleIterator (1, 10))

{. Console.WriteLine (n);

}


В одному ітератором можна використовувати кілька операторів yield, як у наступному прикладі. [5]


public System.Collections.IEnumerator GetEnumerator ()

{return With an iterator, raquo ;; return more than one raquo ;; return value can be returned raquo ;;

yield return . raquo ;;

}


Результати можна вивести за допомогою оператора foreach. [5]

(string element in new TestClass ())

{. Console.Write (element);

}


У кожній послідовної ітерації циклу foreach (або прямому виклику IEnumerator.MoveNext) наступний текст коду ітератора поновлюється після оператора yield і триває до кінця тексту ітератора або до оператора yield break.

Ітератори не підтримують метод IEnumeratorReset (). Для повторної ітерації спочатку необхідно отримати новий ітератор. [5]

IEnumerable.GetEnumerator ()

{(int i=0; i lt; books.Length; i ++)

{return books [i];

}

}


Метод GetEnumerator () тепер буде ітератором. Коли буде здійснюватися перебір в об'єкті Library в циклі foreach, то буде йти звернення до виклику yield return books [i]. При зверненні до оператора yield return буде зберігатися поточне місце розташування. І коли метод foreach перейде до наступної ітерації для отримання нового об'єкта, ітератор почне виконання з цього місця розташування. [3]

В основній програмі в циклі foreach виконується перебір, завдяки реалізації ітератора:

(Book b in library)

{. WriteLine (b.Name);

}


При реалізації ітератора в методі GetEnumerator () застосовувати перебір масиву в циклі for необов'язково. Можна визначити кілька викликів оператора yield return, як показано в прикладі нижче. [3]

IEnumerable.GetEnumerator ()

{return books [0]; return books [1]; return books [2];

}


У цьому випадку при кожному виклику оператора yield return итератор також буде запам'ятовувати поточне місце розташування і при наступних викликах починати з нього. [3]



10.1 Іменований итератор


Вище для створення ітератора був використаний метод GetEnumerator. Але оператор yield можна використовувати всередині будь-якого методу, тільки такий метод повинен повертати об'єкт інтерфейсу IEnumerable. Подібні методи ще називають іменованими итераторами. [3]

У лістингу 10 (див. Додаток А) наведено приклад з джерела [3], в якому створюється іменований итератор в класі Library.

Певний тут ітератор - метод IEnumerable GetBooks (int max) як параметр приймає кількість виведених об'єктів.

IEnumerable GetBooks (int max)

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

{(i == books.Length)

{break;

}

{return books [i];

}

}

}


У процесі роботи програми може скластися, що його значення буде більше, ніж довжина масиву books. І щоб не сталося помилки, використовується оператор yield break. Цей оператор перериває виконання ітератора. [3]

Застосування ітератора:

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





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

  • Реферат на тему: Return to materialism
  • Реферат на тему: Розробка термогенератора, який буде використовувати тепло двигуна для заряд ...
  • Реферат на тему: Порівняння ефективності різних методів розв'язання систем лінійних алге ...
  • Реферат на тему: Опісові композіційно-мовленнєві форми в творах Т. Прохаська &З цього можна ...
  • Реферат на тему: Анексія Криму, як можна вірішіті Конфлікт України с Россией чі можна его ві ...