Сегодня я хотел бы рассказать о других, пропущенных членах классов, т.к. время уже пришло. В прошлой статье я говорил о перегрузке операторов. Существует
специальный оператор, предназначенный для индексирования массива - []. И его нельзя перегрузить. Хотя нет, можно, но при выполнении следующего условия:
перегружать его только для тех объектов, сущностью которых является массив каких-либо элементов. И адресовать этот индексатор будет не различные элементы массива объектов, а какой-либо массив, являющийся членом объекта.
Далее приведен общий формат определения одномерного индексатора.

public возвращаемый_тип this[int index]
{
get{тело_метода_чтения;}
set{тел_ метода_установки;}

Чтоб было понятнее, определим индексатор для нашего класса Matrix...

using Sc=System.Console;

class Matrix// класс матрицы
{
private int[,] element=new int[4,4];

//-------Ну-а-теперь-время-----
//
-------определить-индексатор-
public int this[int i,int j]
{
//
Метод доступа для чтения
get
{
return element[i,j]; 
}
//
Метод доступа для установки
set
{
element[i,j]=value;
}

}

class Application
{
public static void Main()
{
Matrix matrix1=new Matrix();
int i,j;//
для цикла

//Установим разные значения
//
элементов матрицы при помощи
//
определенного индексатора

for(i=0;i<4;i++) 
{
for(j=0;j<4;j++)

matrix1[i,j]=i+j;
}
}

//Теперь точно таким же способом
//
сделаем вывод на консоль

for(i=0;i<4;i++)
{
for(j=0;j<4;j++) Sc.Write(" "+matrix1[i,j]);
Sc.WriteLine();
}

Sc.Write("Нажмите ENTER для выхода.");
Sc.ReadLine();
}
}

Теперь немного слов. Здесь в теле метода set вы должны были обратить внимание, что переменная с именем value нигде не определена. В этом случае value является ключевым словом, указывающим неявно на значение выражения справа от оператора присваивания. get и set также являются ключевыми словами, они являются специальными методами. Если рассмотреть, например, такую строку:

matrix1[i,j]=matrix2[j,i];

то вызывается метод get объекта matrix1 и метод set объекта, а value указывает на значение, возвращаемое методом чтения объекта слева. Вроде просто и красиво, а кое-где даже полезно.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии