Интерфейс IDictionaryEnumerator
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Класс коллекции, который реализует интерфейс IDictionary, предназначен для хра­нения пар ключ/значение. Для опроса элементов в такой коллекции используется интер­фейс IDictionaryEnumerator, а не lEnumerator.

Класс IDictionaryEnumerator явля­ется производным от класса lEnumerator и дополнительно определяет "свои" три свойства. Первое объявляется так:

DictionaryEntry Entry { get; }

Два остальные свойства интерфейса IDictionaryEnumerator:

object Key { get; }

object Value { get; }

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

Пример.

  

   Hashtable ht = new Hashtable();

   ht.Add ("Анатолий", "555-3456");

   ht.Add ("Александр", "555-3452");

   IDictionaryEnumerator etr = ht.GetEnumerator();

   while (etr.MoveNext())

       Console.WriteLine(etr.Entry.Key + ": " + etr.Entry.Value);

Структура DictionaryEntry

Коллекции, в которых хранятся пары ключ/значение, используют для их хранения объект типа DictionaryEntry.

В этой структуре определены следующие свойства:

public object Key { get; set; }

public object Value { get; set; }

Эти свойства используются для получения доступа к ключу или к соответствующему ему значению.

Объект типа DictionaryEntry можно создать с помощью следующего конструктора:

Public DictionaryEntry (object key, object value)

Здесь параметр key принимает ключ,

А параметр value — значение.

Интерфейс IComparer

Этот интерфейс можно использовать для задания способа сортировки элементов коллекции. В интерфейсе IComparer определен метод Compare(), который позволяет сравнивать два объекта:

Int Compare (object v1, object v2)

Метод Compare() возвращает положительное число, если значение v1>v2, отрицательное, если v1<v2, и нуль, если v1=v2.

Интерфейс IHashCodeProvider

Интерфейс IHashCodeProvider должен быть реализован коллекцией, если программисту необходимо определить собственную версию метода GetHashCode(). По умолчанию используется метод Object.GetHashCode().



КОЛЛЕКЦИИ

Классы коллекций общего назначения

Класс Описание
ArrayList Динамический массив, т.е. массив который при необходимости может увеличивать свой размер.
Hashtable Хеш-таблица (словарь) для пар ключ/значение.
Queue Очередь, или список, действующий по принципу: первым прибыл — первым обслужен.
SortedList Отсортированный список пар ключ/значение.
Stack Стек, или список, действующий по принципу: первым прибыл — последним обслужен.

Класс ArrayList

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

Класс ArrayList реализует интерфейсы:

• ICollection,

• IList,

• lEnumerable,

• ICloneable.

// Демонстрация использования ArrayList-массива.

using System;

using System.Collections;

Class ArrayListDemp

{

public static void Main()

{

   ArrayList al = new ArrayList(); // Создаем динамический массив.

   // Добавляем элементы в динамический массив.

   al.Add('C');

   al.Add('A');

   al.Add('E');

   // Отображаем массив, используя индексацию.

   for (int i = 0; i < al.Count; i++)

       Console.Write(al[i] + " ");

   al.Remove('A');               // Удаляем элемент  

   al[0] = 'Y';                       // Изменяем элементы

   al[1] = 'X';

   al.Sort();                          // Сортировка массива

   foreach (char сh in al)

       Console.Write(сh + " ");

   Console.WriteLine("Индекс элемента 'Y' равен " +

                      al.BinarySearch('Y')); // поиск элемента

   // Создаем обычный массив из динамического.

   char[] ia = (char[])al.ToArray (typeof(char));

}

}

Класс Queue

Добавление элементов в очередь и удаление их из нее осуществляется по принципу "первым пришел — первым обслужен" (first-in, first-out— FIFO).

Очередь — это ди­намическая коллекция, которая при необходимости увеличивается, чтобы принять для хранения новые элементы.

Дата: 2019-02-02, просмотров: 266.