Wpis z mikrobloga

Nie rozumiem powodu istnienia zdarzeń w C# skoro to samo można zrobić używając tylko delegatów, może coś źle robię i nie widzę jakichś korzyści, ale w poniższym przykładzie zarówno delegat jak i event robią dokładnie to samo. Wygląda jakby event był tylko opakowaniem delegata. Jeśli się mylę proszę o jakiś przykład gdzie event robi coś więcej niż delegat.

https://ideone.com/hNJ2Xp

#programowanie #csharp
  • 7
@tempyuser: Eventy korzystają z delegatów. Można używać delegatów i nie używać eventów, ale używając eventów zawsze korzysta się z delegatów. To jest ta różnica.

Delegat to wskaźnik na metodę. Jeśli chcesz np. napisać metodę, która w swoim argumencie przyjmuje inną metodę, to używasz delegata.
E event to mechanizm komunikacji między obiektami. Gdy w obiekcie X coś się stanie wywołujesz jego event E, który mogą obsłużyć obiekty A, B i C. Mechanizm
via Wykop Mobilny (Android)
  • 2
@tempyuser:
1. Event można wywołać tylko z wewnątrz klasy
2. Delegaty można dodawać ale wynikiem jest delegate I nie zawsze można odjąć. Tzn skompiluje się ale operacja odjęcia niekoniecznie zadziała

Popristu event w zamyśle jest tablica/lista delegat. A delegat to jest pojedynczy w zamyśle. Dodając je otrzymujesz nowy obiekt który w sobie ma dwa podspodem

Dlatego jeśli nie używasz -= i masz max kilka delegat w jednym polu to praktycznie nie