Twit | Дата: Воскресенье, 17.03.2013, 12:42 | Сообщение # 1 |
 Приятно Царь
| Сегодня я хотел бы рассказать о других, пропущенных членах классов, т.к. время уже пришло. В прошлой статье я говорил о перегрузке операторов. Существует специальный оператор, предназначенный для индексирования массива - []. И его нельзя перегрузить. Хотя нет, можно, но при выполнении следующего условия: перегружать его только для тех объектов, сущностью которых является массив каких-либо элементов. И адресовать этот индексатор будет не различные элементы массива объектов, а какой-либо массив, являющийся членом объекта. Далее приведен общий формат определения одномерного индексатора. 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 указывает на значение, возвращаемое методом чтения объекта слева. Вроде просто и красиво, а кое-где даже полезно.
Кризис.Разные мнения.Идеи.
Первое правило шахмат - хочешь быть умнее? Играй с более умным соперником.
|
|
| |