Zdarzenia i delegaty w języku C#

delegatyc

Dzisiejszy wpis będzie poświęcony dwóm bardzo interesującym mechanizmom języka C# – zdarzenia i delegaty.

Delegaty

Delegat w rozumieniu języka programowania to wskaźnik na funkcję – pojęcie znane z takich języków jak C++ czy Java. Jednak w odróżnieniu od innych języków w C#, mechanizm ten został uproszczony i łatwiejszy w użyciu. Delegaty umożliwiają późne wiązanie, czyli decyzja o utworzeniu obiektu zapada w trakcie działania programu. Przeanalizujmy przykład takiego delegata.

1

Tworzenie delegata odbywa się jak tworzenie zwykłej metody, przy czym należy zaznaczyć, że tworzymy delegat za pomocą słowa kluczowego delegate. Tworzone delegaty nie mają implementacji. Sygnaturę delegata określają argumenty jakie przyjmuje oraz zwracany typ. Używając delegatów należy pamiętać, że delegaty to po prostu nowe typy danych, z tym że tworząc zmienne ich typów można przypisać do nich metody o odpowiadającej im sygnaturze. Poniżej przykład użycia delegata.

Deklaracja metod o takiej samej sygnaturze jak sygnatura naszego delegata:

2

Utworzenie zmiennych delegata wskazujących na wcześniej zadeklarowane metody:

4

Do delegata można przypisać więcej niż jedną metodę. Dzięki temu w momencie wywołania delegata zostaną wywołane wszystkie metody przypisane do niego:

5

Zdarzenia

Zdarzenia to elementy wykorzystywane bardzo często, są to akcje wykonywane w momencie zaistnienia pewnej sytuacji, np. ruch myszką, kliknięcie na przycisk, itp.. Zdarzenia w języku C# opierają się na wcześniej opisanych delegatach.

Aby zadeklarować zdarzenie należy użyć słówka kluczowego event:

6

W tym przypadku do zmiennej Click będzie można przypisywać metody zgodne z sygnaturą delegata EventHandler, nic nie stoi na przeszkodzie, aby użyć w tym miejscu własnego delegata, pamiętając o tym aby przypisywać do zmiennej metody (może ich być więcej niż jedna) o takiej samej sygnaturze jak nasz delegat. W momencie zajścia określonego zdarzenia (np. kliknięcie na przycisk) wywołane zostaną wszystkie metody przypisane do tego zdarzenia. Przypisanie metody do zdarzenia odbywa się dokładnie tak samo jak przypisanie metody do delegata:

7
8

Podsumowanie

Delegaty i zdarzenia to bardzo użyteczne mechanizmy języka C#. Za ich pomocą można, przede wszystkim zwiększyć czytelność kodu, ponieważ zmniejszamy ilość instrukcji warunkowych, przez co kod staje się bardziej zrozumiały. Pisząc aplikacje desktopowe (WinForms, WPF) delegaty i zdarzenia będą naszymi nieodzownymi towarzyszami, gdyż pisanie aplikacji okienkowych opiera się głównie na zdarzeniach.

Autorem tekstu jest Mateusz Łysień.

Zobacz również artykuły o podobnej tematyce

Nowa jakość w branży parentingowej
2

Firma ebiton24 specjalizuje się w dystrybucji artykułów dla dzieci i niemowląt oraz ich rodziców. To jeden z najszybciej rozwijających się...

Podsumowanie Q3 2018 w i-systems
banner

Przedostatni kwartał w i-systems stał pod znakiem nowej organizacji pracy zespołów, które przekształciły się w konteksty. Wpłynęło to, w sposób...

B2E, czyli skuteczne wsparcie organizacji pracy
B2E banner

Jak sprawić, by organizacja efektywnie funkcjonowała na współczesnym rynku? Każdy kto prowadzi firmę wie, że kwestia ta potrafi spędzać sen...

Zobacz więcej wpisów