Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КПИЯП 2.docx
Скачиваний:
2
Добавлен:
25.09.2019
Размер:
45.22 Кб
Скачать

Индексаторы

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

Главное назначение индексаторов- поддержка создания специализированных массивов, на которые налагаются одно или несколько ограничений. Индексаторы характеризуются размерность и бывают одномерными и многомерными :

Тип this [int индекс]

{get {}

Set{}}

В теле индексатора определяется два аксессора, которые вызываются автоматически и в качестве параметра оба принимают индекс. Если индексатор стоит слева от оператора присваивания, вызывается сет аксессор, устанавливается параметр заданный индексом. В противном случае- срабатывает гет аксессор и возвращает значение элемента с указанным индексом. Одним из достоинств индексаторов является то, что он позволяет точно управлять характером доступа к массиву, исключая попытки некорректного доступа

Class FailArray

{int []a;

Public int Length;

Public bool lag;

Public FailArray(int size)

{a= new int[size];

Lungth = size}

Public int this[int index]

{get{if (ole(index)){

Lag = false;

Return a [index];}

Else

{lag = true;

Return 0;}}

Set{if(ole(index))

{a[index] = value;

Lag = false;}

Else

Lag = true;}}

Private bool ole(int index)

{if(index>= 0&index<length)

Return true;

Return false;}}

Class demo

{public static void Main()

{FailArray fs = new FailArray(5);

Int = x;

For (int i=0;i<(fs.length*2);i++)

Fs[i] = i*10;

For (-//-)

{x = fs[i];

If (x:=-1)

Console.Write(x +” “);}

For (-//-)

{fs [i] = i*10;

If (fs.lag)

Console.write();}}

Public int this[double idx]

{get{int index;

If ((idx – (int)idx)<0.5)index = (int)idx;

Else

Index = (int)idx +1;

If (ole(index)){…}}

Set{int index;

If ((idx-…)

{..}

Индексатор

  1. Поскольку в индексаторе не определяется область памяти, получаемое индексатором значение нельзя передавать методу в качестве параметра

  2. Индексатор должен быть членом экземпляра своего класса, поэтому нельзя объявлять его с помощью ключевого слова static

работа с файлами