Індексатори в c #

Індексатори в C #

Індексатори в c #

Індексатори в C #

У цій статті я розповім про те, що таке індексатори, навіщо вони потрібні, як і коли ними користуватися в своїх програмах, написаних на мові C #. І так, індексатори потрібні в тих випадках, коли ми пишемо клас, провідний себе як якась колекція, наприклад, в ньому є поле-масив, наприклад, такий клас:

Як видно з прикладу, в класі є поле-масив, є конструктор, який задає розмір масиву, і властивість, що повертає розмір масиву «зовнішнього світу». Але потрібно ж ще якось організувати доступ до елементів масиву, щоб користувачі нашого класу могли змінювати і отримувати вміст внутрішнього масиву. Тут звичайно можна написати пару методів, один буде повертати значення елемента з зазначеним, в якості аргументу методу, індексом, а другий метод, буде встановлювати значення зазначеного (тим же способом) елемента. І виглядало б це приблизно так:

А використання об'єктів даного класу могло б виглядати так:

Можете створити новий проект, і перевірити цю справу на практиці ... Але можна вирішити задачу організації доступу до елементів вбудованого в об'єкт масиву набагато елегантніше! Ось тут ми і будемо використовувати індексатори. Давайте додамо в наш клас індексатор, а виглядати він буде так:

Як бачите, індексатор дуже схожий на властивість, але у нього має бути специфічне ім'я «this» і додатковий параметр в квадратних дужках (якого немає у звичайного властивості).

Взагалі this - це ключове слово мови C # і воно має особливе значення (використовується не тільки в індексатора), про який я як-небудь розповім в одній зі статей.

Цей додатковий параметр використовується як індекс, для звернення до внутрішнього масиву. Використання об'єктів класу, в який ми додали індексатор виглядає як використання масивів:

Погодьтеся, цей варіант коротше і зручніше! Ну поки вистачить інформації про індексатора, як-небудь я докладніше розсаджені про них ...