.NET глазами дельфийца. C# - Индексаторы
ОГЛАВЛЕНИЕ
Страница 11 из 19
Индексаторы
В Delphi можно реализовать свойство класса типа массив и, установив для него атрибут default,получить некоторое подобие индексатора:
type
TMyObject = class
public
property Items[Index: integer]: string read GetItem; default;
end;
Тогда в коде можно использовать две эквивалентныеконструкции:
S := MyObject.Items[I];
S := MyObject[I];
Вторая строка как раз и демонстрирует основную идеюиндексаторов C# -возможность обращаться к объекту как к массиву. Однако в Delphi есть существенное ограничение -можно использовать только одно свойство (типа массива) по умолчанию.
В C# можно реализовать произвольное количество индексаторов длякласса:
class A {
int this[int Index] { . . . }
string this[char Col, int Row] { . . . }
static void Main() {
A a = new A();
for (int i = 0; i < a.Count; i++)
Console.Writeln(a[i].ToString());
for (char c = 'a'; c < 'z'; c++)
for (int r = 1; r < 100; r++)
Console.Writeln(a[c, r]);
}
}