Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1391-1497.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
126 Кб
Скачать
☆

Int Count { get; } bool IsReadOnly { get; }

Властивість Count містить ряд елементів, що зберігаються в цей момент у колекції. А властивість IsReadOnly має логічне значення true, якщо колекція доступна тільки для читання. Якщо ж колекція доступна як для читання, так і для запису, то дана властивість має логічне значення false.

Крім того, в інтерфейсі ICollection<T> визначені перераховані нижче методи. Зверніть увагу на те, що в цьому узагальненому інтерфейсі визначена трохи більша кількість методів, чим у його неузагальненому аналогу.

Метод

Опис

void Add(T item)

Додає елемент item у колекцію. Генерує виключення NotSupportedException, якщо колекція доступна тільки для читання

void Clear()

Видаляє всі елементи із колекції

bool Contains(T item)

Повертає логічне значення true, якщо колекція містить елемент item, а інакше - логічне значення false

void CopyTo(T[] array, int arraylndex)

Копіює вміст зухвалої колекції в масив array, починаючи з елемента, що вказує по індексі

arraylndex

void Remove(T item)

Видаляє перше входження елемента item у колекції. Повертає логічне значення true, якщо елемент item вилучений. А якщо цей елемент не знайдений у колекції, то повертається логічне значення false

Деякі з перерахованих вище методів генерують виключення NotSupportedException, якщо колекція доступна тільки для читання.

А оскільки інтерфейс ICollection<T> успадковує від інтерфейсів IEnumerable і IEnumerable<T>, де він містить у собі також узагальнену й неузагальнену форми методу GetEnumerator().

Завдяки тому що в інтерфейсі ICollection<T> реалізується інтерфейс IEnumerable<T>, у ньому підтримуються також методи розширення, певні в класі Enumerable. Незважаючи на те що методи розширення призначені головним чином для підтримки LINQ, їм можна знайти й інше застосування, у тому числі й у колекціях.

Інтерфейс IList<T>

В інтерфейсі IList<T> визначається таке поводження узагальненої колекції, що дозволяє здійснювати доступ до її елементів по індексі з відліком від нуля. Цей інтерфейс успадковує від інтерфейсів IEnumerable, IEnumerable<T> і ICollection<T> і тому є узагальненим варіантом неузагальненого інтерфейсу IList. Методи, певні в інтерфейсі IList<T>, перераховані в табл. 25.11. У двох із цих методів передбачається модифікація колекції. Якщо ж колекція доступна тільки для читання або має фіксований розмір, то методи Insert () і RemoveAt () генерують виключення NotSupportedException.

Таблиця 25.11. Методи, певні в інтерфейсі IList<T>

Метод

Опис

int IndexOf(Т item)

Повертає індекс першого входження елемента item у колекції. Якщо елемент item не виявлений, то метод повертає значення -1

void Insert (int index, T item)

Вставляє в колекцію елемент item по індексі index

void RemoveAt(int index)

Видаляє із колекції елемент, розташований по зазначеному індексі index

Крім того, в інтерфейсі IList<T> визначається індексатор

Т this[int index] { get; set; }

який установлює або повертає значення елемента колекції по зазначеному індексі index.

Інтерфейс IDictionary<TKey, TValue>

В інтерфейсі IDictionary<TKey, TValue> визначається таке поводження узагальненої колекції, що дозволяє перетворити унікальні ключі у відповідні значення. Це означає, що в даному інтерфейсі визначається колекція, у якій зберігаються пари "джерело-значення". Інтерфейс IDictionary<TKey, TValue> успадковує від інтерфейсів IEnumerable,IEnumerable<KeyValuePair<TKey,TValue>>иICollection<KeyValuePair<TKey, TValue> і тому є узагальненим варіантом неузагальненого інтерфейсу IDictionary. Методи, оголошені в інтерфейсі IDictionary<TKey, TValue>, наведені в табл. 25.12. Всі ці методи генерують виключення ArgumentNullException при спробі вказати порожній ключ.

Таблиця 25.12. Методи, певні в інтерфейсі IDictionary<TKey, TValue>

Метод

Опис

void Add(TKey key, TValue value)

Додає в зухвалу колекцію пари "ключ- значення", обумовлену параметрами key й value. Генерує виключення ArgumentException, якщо ключ key уже перебуває в колекції

bool Contains(TKey key)

Повертає логічне значення true, якщо зухвала колекція містить елемент key як ключ, а інакше - логічне значення false

bool Remove(TKey key)

Видаляє з колекції елемент, ключ якого дорівнює значенню key

bool TryGetValue(TKey key, out TValue value)

Уживає спробу витягти значення з колекції по зазначеному ключі key і привласнити це значення змінної value. При вдалому результаті операції повертається логічне значення true, а інакше — логічне значення false. Якщо ключ key не знайдений, змінної value привласнюється значення, обиране за замовчуванням

Крім того, в інтерфейсі IDictionary<TKey, TValue> визначені перераховані нижче властивості.

Властивість

Опис

ICollection Keys<TKey> { get; }

Одержує колекцію ключів

ICollection Values<TValue> { get; }

Одержує колекцію значень

Варто мати на увазі, що ключі й значення, що втримуються в колекції, доступні окремими списками за допомогою властивостей Keys і Values.

І нарешті, в інтерфейсі IDictionary <TKey, TValue> визначається наступний індексатор.

TValue this[TKey key] { get; set; }

Цей індексатор служить для одержання й установки значення елемента колекції, а також для додавання в колекцію нового елемента. Треба, однак, мати на увазі, що як індекс у цьому випадку служить ключ елемента, а не сам індекс.

Інтерфейси IEnumerable<T> і IEnumerator<T>

Інтерфейси IEnumerable<T> і IEnumerator<T> є узагальненими еквівалентами розглянутих раніше неузагальнених інтерфейсів IEnumerable і IEnumerator. У них оголошуються аналогічні методи й властивості, та й діють вони по тім же принципі. Зрозуміло, узагальнені інтерфейси оперують даними тільки того типу, що вказується в аргументі типу.

В інтерфейсі IEnumerable<T> метод GetEnumerator ( ) оголошується в такий спосіб.

IEnumerator<T> GetEnumerator()

Цей метод повертає перечисельник типу Т для колекції. А це означає, що він повертає типізований перечисельник.

Крім того, в інтерфейсі IEnumerable<T> визначаються два таких же методи, як й у неузагальненому його варіанті: MoveNext () і Reset (). У цьому інтерфейсі оголошується також узагальнений варіант властивості Current.

Т Current { get; }

Ця властивість повертає посилання типу Т на наступний об'єкт. А це означає, що узагальнений варіант властивості Current є типізованим.

Але між інтерфейсами IEnumerator і IEnumerator<T> є одне важливе розходження: інтерфейс IEnumerator<T> успадковує від інтерфейсу IDisposable, тоді як інтерфейс IEnumerator не успадковує від нього. В інтерфейсі IDisposable визначається метод Dispose (), що служить для звільнення некерованих ресурсів.

ПРИМІТКА

В інтерфейсі IEnumerable<T> реалізується також неузагальнений інтерфейс IEnumerable. Це означає, що в ньому підтримується неузагальнений варіант методу GetEnumerator (). Крім того, в інтерфейсі IEnumerable<T> реалізується неузагальнений інтерфейс IEnumerator, а отже, у ньому підтримуються неузагальнені варіанти властивості Current.

Інтерфейс IComparer<T>

Інтерфейс IComparer<T> є узагальненим варіантом розглянутого раніше інтерфейсу IComparer. Головна відмінність між ними полягає в тім, що інтерфейс IComparer<T> забезпечує типову безпеку. У ньому узагальнений варіант методу Compare ( ) оголошується в такий спосіб.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]