Индексированные свойства и перегрузка свойств

Свойство, определение которого содержит параметры, называется индексированным. Определение индексированного свойства позволяет работать с ним таким же образом как с массивом.

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;

См.также:

Свойства