Индексаторы позволяют получить доступ к объекту, как будто это массив. Если определить для класса индексатор, это укажет компилятору, что делать если он встретит код, в котором экземпляр класса рассматривается так, как будто это массив.
Индексаторы определяются примерно также как и свойства (с использованием get и set). Основное отличие – что в качестве имени индексатора используется ключевое слово this.
Строка public double this[int i] говорит, что мы хотим рассматривать каждый экземпляр класса (структуры) Vector как одномерный массив с int в качестве индекса и что тип возвращаемого значения double.
Пример идексатора в C#:
public double this[int i]
{
get
{
switch (i)
{
case 0: return x; // break и не надо
case 1: return y;
case 2: return z;
// вызываем исключение
default: throw new IndexOutOfRangeException("Отсуствует эл." + i);
}
}
set
{
switch (i)
{
case 0: x = value; break;
case 1: y = value; break;
case 2: z = value; break;
default: throw new IndexOutOfRangeException("Отсуствует эл." + i);
}
}
}
