• Microsoft .NET
  • C#.NET
  • Решение 11 распространенных проблем в многопоточном коде

.NET глазами дельфийца. C# - Индексаторы

ОГЛАВЛЕНИЕ

 

Индексаторы

В 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]);
}
}