Каковы различия между делегатами и событиями?

Вы можете использовать следующее:

@Component({
  (...)
  template: `
    <div *ngFor="let i of Arr(num).fill(1)"></div>
  `
})
export class SomeComponent {
  Arr = Array; //Array type captured in a variable
  num:number = 20;
}

Или реализовать пользовательский канал:

import {PipeTransform, Pipe} from '@angular/core';

@Pipe({
  name: 'fill'
})
export class FillPipe implements PipeTransform {
  transform(value) {
    return (new Array(value)).fill(1);
  }
}

@Component({
  (...)
  template: `
    <div *ngFor="let i of num | fill"></div>
  `,
  pipes: [ FillPipe ]
})
export class SomeComponent {
  arr:Array;
  num:number = 20;
}
300
задан 5StringRyan 30 September 2011 в 04:09
поделиться

3 ответа

объявление События добавляет слой абстракции и защиты на делегат экземпляр. Эта защита препятствует тому, чтобы клиенты делегата сбросили делегата и ее список вызова и только позволяет добавлять или удалять цели из списка вызова.

272
ответ дан mmcdole 23 November 2019 в 01:27
поделиться

В дополнение к синтаксическим и операционным свойствам существует также семантическое различие.

Делегаты являются, концептуально, шаблонами функций; то есть, они выражают контракт, функция должна придерживаться того, для рассмотрения "типа" делегата.

События представляют... хорошо, события. Они предназначаются для предупреждения кого-то, когда что-то происходит и да, они придерживаются определения делегата, но они не то же самое.

, Даже если они были точно тем же самым (синтаксически и в коде IL) там все еще останется семантическим различием. В целом я предпочитаю иметь два различных названия двух различных понятий, даже если они реализованы таким же образом (который не означает, что мне нравится иметь тот же код дважды).

92
ответ дан Robert Harvey 23 November 2019 в 01:27
поделиться

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

6
ответ дан 23 November 2019 в 01:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: