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

Firma i-systems w rankingu FT1000
FT1000

6 kwietnia 2018 roku, przy współpracy Financial Times oraz Statista już po raz drugi opublikowany został ranking 1000 najszybciej rozwijających...

Podsumowanie Q1 2018 w i-systems
dropshipping

Wszystko wskazuje na to, że rok 2018 będzie rokiem dużych technologicznych zmian w e-commerce. Świadczył o tym już pierwszy kwartał....

Europejska sprzedaż z dedykowanym systemem e-commerce
gastromania

Zarząd firmy Machej Holding współpracuje z i-systems od 2011 roku. Przedsiębiorstwo oferuje urządzenia oraz akcesoria gastronomiczne i cukiernicze najlepszych światowych...

Zobacz więcej wpisów