Оператор присваивания

Оператор присваивает новое значения переменной, свойству или событию.

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

Оператор присваивания событию может принимать три формы:

Выполнение операции производится следующим образом:

Пример

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;

См. также:

Операторы