Определение методов доступа свойства содержит операторы, которые выполняются при чтении и записи значения свойства.
inline-accessor-declarations:
inline-get-accessor-declaration inline-set-accessor-declarationopt
inline-set-accessor-declaration inline-get-accessor-declarationopt
inline-get-accessor-declaration:
attributesopt Get method-localsopt Begin block End Get
inline-set-accessor-declaration:
attributesopt Set method-localsopt Begin block End Set
Определение методов доступа может содержать определение метода чтения, метода записи, либо обоих методов. Каждое из определений состоит из ключевого слова Get или Set и тела определения.
Метод чтения значения свойства соответствует методу, который возвращает значения типа, соответствующего типу свойства. Набор параметров этого метода соответствует набору параметров свойства.
Метод установки (записи) значения свойства соответствует методу, который не имеет возвращаемого значения. Список параметров данного метода определяется объединением списка параметров свойства и дополнительного параметра, передаваемого по значению, с типом, совпадающим с типом поля. Данный параметр называется Value и определяется неявно. Является ошибкой компиляции использование имени Value в качестве имени параметра свойства, либо имени локальной переменной определенной в его методе записи.
Компилятор автоматически генерирует методы чтения и записи, резервируя для них определенные имена.
В зависимости от наличия определений методов чтения/записи в определении свойства оно классифицируется следующим образом:
Свойство, содержащее определение обоих методов, называется доступным для чтения/записи.
Свойство, содержащее определение только метода чтения, называется свойством доступным только для чтения. Является ошибкой компиляции присвоение значения свойству только для чтения.
Свойство, содержащее определение только метода записи, называется свойством доступным только для записи. Является ошибкой компиляции использование свойства только для записи кроме оператора присваивания.
Class TestProperty
i: integer;
//Свойство, доступное для чтения и записи
Public Property Prop1: integer
Get
Begin
Return i;
End Get
Set
Begin
i := Value;
End Set
End Property;
//Свойство, доступное только для чтения
Public Property Prop2: integer
Get
Begin
Return 1
End Get
End Property;
//Свойство, доступное только для записи
Public Property Prop3: integer
Set
Begin
i := Value;
End Set
End Property;
End Class;
См.также: