PascalABC.NET

Операторы += и -= для процедурных переменных

Оператор присваивания += предназначен для присоединения к процедурной переменной процедуры, оператор присваивания -= - для отсоединения. Подпрограммы вызываются в порядке присоединения. Например:

procedure mult2(var r: real);
begin
  r := 2 * r;
end;

procedure add3(var r: real);
begin
  r := r + 3;
end;

var
  p: procedure (var x: real);
  r: real;

begin
  r := 1;
  p := mult2;
  p += add3;
  p(r); // r := 2 * r; r := r + 3;
  p -= mult2;
  p(r); // r := r + 3; 
end.

Отсоединение не присоединенных подпрограмм не выполняет никаких действий.

Кроме того, к процедурной переменной можно прикреплять/откреплять статические и экземплярные методы классов. Пример см. в теме процедурные переменные.

Операторы += и -= используются также для добавления/удаления обработчиков для событий .NET. Например:

procedure OnTimer1(sender: object; e: System.Timers.ElapsedEventArgs);
begin
  write(1);
end;

begin
  var Timer1 := new System.Timers.Timer(1000);
  Timer1.Elapsed += OnTimer1;
  Timer1.Start;
  while True do
    Sleep(1000);
end.