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

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





er. Для цієї мети необхідно спочатку створити клас, який реалізує інтерфейс IComparer, а потім вказати об'єкт цього класу, коли буде потрібно порівняння. [2]

Інтерфейс IComparer існує у двох формах: узагальненої і неузагальнених. Незважаючи на схожість застосування обох форм даного інтерфейсу, між ними є деякі, хоча і невеликі, відмінності.

У неузагальнених інтерфейсі IComparer визначається тільки один метод Compare ():

Compare (object x, object у)


У методі Compare () порівнюються об'єкти х та у. Для сортування об'єктів по наростаючій конкретна реалізація даного методу повинна повертати нульове значення, якщо значення порівнюваних об'єктів рівні; позитивне - якщо значення об'єкта х більше, ніж в об'єкта у; і негативне - якщо значення об'єкта х менше, ніж в об'єкта у. А для сортування за спадної можна звернути результат порівняння об'єктів. Якщо ж тип об'єкта х не підходить для порівняння з об'єктом у, то в методі CompareTo () може бути згенеровано виняток ArgumentException. [2]

Об'єкт типу IComparer може бути вказаний при конструюванні об'єкта класу SortedList, при виклику методу ArrayList.Sort (IComparer), а також у ряді інших місць у класах колекцій. Головна перевага застосування інтерфейсу IComparer полягає в тому, що сортуванні підлягають об'єкти тих класів, в яких інтерфейс IComparable не реалізується. [2]

Інтерфейс IComparer lt; T gt; є узагальненим варіантом інтерфейсу IComparer. У ньому визначається наведений нижче узагальнений варіант методу Compare ():

Compare (Т х, T у)


У цьому методі порівнюються об'єкти х і в і повертається нульове значення, якщо значення порівнюваних об'єктів рівні; позитивне - якщо значення об'єкта х більше, ніж в об'єкта у; і негативне - якщо значення об'єкта х менше, ніж в об'єкта у. [2]



9. Нумератори


До елементів колекції нерідко доводиться звертатися циклічно, наприклад, для відображення кожного елемента колекції. З цією метою можна, з одного боку, організувати цикл foreach, а з іншого - скористатися перечіслітеля. Нумератор - це об'єкт, який реалізує неузагальнених інтерфейс IEnumerator або узагальнений інтерфейс IEnumerator lt; T gt ;. [2]

В інтерфейсі IEnumerator визначається одна властивість, Current, неузагальнених форма якого наведена нижче:

Current {get;}


А в інтерфейсі IEnumerator lt; T gt; оголошується наступна узагальнена форма властивості Current:


Т Current {get;}


В обох формах властивості Current виходить поточний перелічуваний елемент колекції. Але оскільки властивість Current доступно тільки для читання, то Нумератор може служити тільки для вилучення, але не видозміни об'єктів в колекції. [2]

В інтерфейсі IEnumerator визначаються два методи. Першим з них є метод MoveNext (), оголошений наступним чином:

MoveNext ()


При кожному виклику методу MoveNext () поточне положення перечіслітеля зміщується до наступного елементу колекції. Цей метод повертає логічне значення true, якщо наступний елемент колекції доступний, і логічне значення false, якщо досягнуто кінець колекції. Перед першим викликом методу MoveNext () значення властивості Current виявляється невизначеним. [2]

Для установки перечіслітеля у вихідне положення, відповідне початку колекції, викликається наведений нижче метод Reset ():

Reset ()


Після виклику методу Reset () перерахування знову починається з самого початку колекції. Тому, перш ніж отримати перший елемент колекції, слід викликати метод MoveNext (). [2]

В інтерфейсі IEnumerator lt; T gt; методи MoveNext () і Reset () діють по тому ж самому принципу. Необхідно також звернути увагу на два наступних моменту. По-перше, Нумератор не можна використовувати для зміни вмісту перечисляемой з його допомогою колекції. Отже, нумератори діють по відношенню до колекції як до доступної тільки для читання. І по-друге, будь-яка зміна в перечисляемой колекції робить Нумератор недійсним.


. 1 Застосування звичайного перечіслітеля


Перш ніж отримати доступ до колекції за допомогою перечіслітеля, необхідно отримати його. У кожному класі колекції для цієї мети надається метод GetEnumerator (), який повертає Нумератор в початок колекції. Використовуючи цей нумератори, можна отримати доступ до будь-якого елементу колекції по черзі. В цілому, для циклічного звернення до вмісту колекції за допомогою перечіслітеля рекомендується дотримувати...


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





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

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