Основы объектно-ориентированного программирования на языке C# book | Page 128

7 Класи
ref чи out.

7.5 Iндексатори

Розглянемо таку задачу. Нехай необхiдно на табло виводити напис про номер поверху при натисканнi на кнопку в лiфтi. Яким чином можна в класi Elevator реалiзувати цю функцiональнiсть? Найпростiше рiшення – додати як член класу поле масив
public int [] Batton; i для звертання до виводу цього напису використовувати
MyElevator. Batton [ i ];
де i номер поверху. Однак C # пропонує бiльш елегантний i зрозумiлий розв’ язок – iндексатори. Iндексатори дозволяють розглядати екземпляр класу як масив. Для визначення iндексатора застосовується такий синтаксис:
атрибути [] модифiкатори [] тип this [ списокформальнихпараметрiв ] { set get }
де:
– атрибути— додаткова iнформацiя про iндексатор, що дозволяє дати спецiальне iм’ я iндексатору, щоб його можна було використовувати з коду на iнших мовах, що не пiдтримують iндексатори;
– модифiкатори— модифiкатори доступу; до iндексатора можна застосовувати майже всi модифiкатори C #, за виключенням static;
– список формальних параметрiв— указує параметри, за допомогою яких здiйснюється iндексацiя. Вiн передається в get i set, якi використовуються в iндексаторi так само, як у властивостях, get застосовується для значення, яке необхiдно повернути, aset
— для змiни цього значення.
Слiд зазначити, що iндексатори розрiзняються за кiлькiстю й типами формальних параметрiв, але не мають iмен( на вiдмiну вiд властивостей).
Наша програма, яка розв’ язує задачу виглядає так:
128