Страница 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]); } }
|