Свойство, определение которого содержит параметры, называется индексированным. Определение индексированного свойства позволяет работать с ним таким же образом как с массивом.
property-indexers:
[ property-indexer-list ]
property-indexer-list
property-indexer
property-indexer-list ; property-indexer
property-indexer:
identifier : type
Определение параметров свойства в целом схоже с определением параметров методов. Не допускается при определении параметров свойства использовать модификаторы Out и Var.
Является ошибкой компиляции определение локальных переменных в методах доступа свойства имена которых совпадают с именами его параметров.
Допустима перегрузка параметрических свойств, т.е. определение нескольких свойств с одинаковым именем, но различными сигнатурами параметров. Для разрешения имен в этом случае применяются те же правила, что и для разрешения имен перегруженных методов.
Class IndexProperty
i: array Of integer;
Constructor IndexProperty(Length: integer);
Begin
i := New integer[Length];
End Constructor;
Public Property Item[Index: integer]: integer
Get
Begin
Return i[Index];
End Get
Set
Begin
i[Index] := Value;
End Set
End Property;
End Class;
Sub Test();
Var
Obj: IndexProperty = New IndexProperty(1);
Begin
Obj.Item[0] := 100;
End Sub;
См.также: