Индексаторы
Индексаторы позволяют индексировать экземпляры класса или структуры так же, как массивы. Индексаторы напоминают свойства, но их методы доступа принимают параметры.
Очень часто класс содержит некий набор объектов (массив, список). Для доступа к элементам этого набора необходимо реализовать два параметра: индекс элемента и значение. Для повышения удобства работы с такими классами были разработаны индексаторы. В случае их реализации в классе с объектной переменной можно работать как с массивом, т.е. после её идентификатора указывать индекс элемента, к которомe мы обращаемся для чтения или для записи.
Индексаторы определяться следующим образом:
[<атрибуты>] [<модификаторы>] <тип> this [<индекс>]
{
[get
{
}]
[set
{
}]
}
Индекс представляет собой список формальных параметров, описывающий индекс элементов, по которым осуществляется доступ к массиву по механизму, реализованному в классе.
Синтаксически объявление индексатора такое же, как и в случае свойств, но методы get и set приобретают аргументы по числу размерности массива, задающего индексы элемента, значение которого читается или обновляется. У класса может быть только один индексатор и у этого индексатора стандартное имя this. Так что если среди полей класса есть несколько массивов, то индексация объектов может быть выполнена только по одному из них.
Рассмотрим пример:
class Chair
{
string[] lesson=new string[5];
public string this[int i]
{
get
{
return lesson[i];
}
set
{
lesson[i] = value;
}
}
}
class Program
{
static void Main()
{
Chair C1 = new Chair();
C1[0] = "АЯ";
C1[1] = "Инфрматика";
C1[2] = "БД";
for (int i = 0; i < 3; i++)
Console.WriteLine(C1[i]);
Console.ReadLine();
}
}
В приведенном примере, создан класс Chair – описывающий кафедру. Поле lesson определяет предметы проводимые на кафедре. При помощи индексатора выполняется изменение и чтение поля lesson.
- Основные понятия ооп
- Модификаторы доступа
- Uml, назначение, типы диаграм.
- Диаграмма классов
- Деструкторы
- Свойства
- Индексаторы
- Этапы проектирования класса.
- Отношения между классами
- Вложенные классы
- Наследование
- Отношения и их графическое изображение на диаграмме классов
- Полиморфизм
- Абстрактные классы
- Классы без потомков
- Интерфейсы
- Изображение интерфейсов и абстрактных классов на диаграмме классов
- Вложенные классы
- Статические классы
- Делегаты
- Криптография и .Net
- Сетевое программирование в c#
- Создание простого клиент-серверного приложения используя сокеты
- Многопоточность
- Разработка библиотек dll