Оператор присваивает новое значения переменной, свойству или событию.
assigment-statement:
variable-assignment
event-assignment
event-assigment:
event := expression
event += expression
event -= expression
Оператор присваивания имеет две разные формы: простое присваивание и присваивание событию.
Левая часть оператора простого присваивания должна быть выражением значением которого является переменная, свойство или событие. Правая часть оператора должна быть выражением тип которого должен быть совместим с типом переменной, т.е. должно существовать неявное преобразование от типа выражения к типу переменной. В противном случае возникает ошибка компиляции.
variable-assignment:
variable := expression
Если левая часть оператора является свойством, то для данного свойства должен быть определен метод доступа Set. В противном случае возникает ошибка компиляции.
Оператор выполняется следующим образом:
Производится вычисление выражения, указанного в операторе, и его значение присваивается в переменную.
Если переменная имеет тип делегат, то присвоение осуществляется аналогично присвоению событию. Установка списка вызовов (:=) для переменных типа делегат, в отличии от событий, доступна в любом месте кода.
Левая часть оператора присваивания событию должна представлять собой выражение, классифицированное как доступ к событию. Правая часть оператора присваивания событию должна представлять собой выражение, которое может быть неявным образом приведено к типу события, либо значение Null, если необходимо отменить обработку события.
event-assigment:
event := expression
event += expression
event -= expression
Оператор присваивания событию может принимать три формы:
Установка списка вызовов для указанного события (в форме event := expression) (Использование данной формы присвоения доступно только в базовом типе, в котором определено событие).
Расширение списка вызовов для указанного события (в форме event += expression).
Редукция списка вызовов для указанного события (в форме event -= expression).
Выполнение операции производится следующим образом:
Вычисляется экземплярное выражение доступа к событию, если таковое имеется.
Значение выражения в правой части оператора вычисляется и если необходимо приводится к типу события посредством неявного преобразования.
Список вызовов события модифицируется в соответствии с формой оператора, при этом в качестве операнда используется значение вычисленного выражения в правой части оператора.
Delegate UserEvent(x, y: integer);
Class TestAssignment
s: string;
Property Text: string
Get
Begin
Return s;
End Get
Set
Begin
//Присвоение переменной
s := value;
End Set
End Property;
Event OnUserEvent: UserEvent;
Constructor Create(s: string);
Begin
//Присвоение свойству
Self.Text := s;
//Присвоение событию
OnUserEvent := EventSub1;
OnUserEvent += EventSub2;
End Constructor;
Sub EventSub1(x, y: integer);
Begin
End Sub;
Sub EventSub2(x, y: integer);
Begin
End Sub;
End Class TestAssignment;
См. также: