Jeśli kiedykolwiek używałeś wskaźników w dowolnym języku programowania, możesz mieć pomysł na odniesienie. C# Delegaci działają tak samo jak wskaźniki. Podobnie jak odwołujemy się do funkcji za pomocą wskaźników, możemy użyć delegatów do odniesienia się do funkcji w C#. Delegaci są celowo zbudowane w celu tworzenia funkcji wywoływania i dodawania zdarzeń. Oznacza to, że delegat może zdecydować, która metoda zostanie wykonana w tym czasie w C#. Delegaci pomagają nam zawrzeć funkcje i mogą wykonać więcej niż dwie funkcje dla zdarzenia solo. Delegaci mają typy niestandardowe i akcji. W tym przewodniku postanowiliśmy objąć zarówno jego typy, jak i zwłaszcza typ „akcji”. Zacznijmy od tworzenia pliku C# w powłoce, aby spojrzeć na delegatów.
Przykład nr 01:
Nie patrząc na delegata niestandardowego, nie możemy zrozumieć znaczenia delegata akcji w C#. W ramach tego przykładu najpierw omówimy delegat niestandardowy. Korzystamy z biblioteki „System” w kodzie z słowem kluczowym „Używanie”. Ta biblioteka jest niezbędna w każdym kodzie C#, ponieważ sprawia, że używamy wielu standardowych funkcji i instrukcji w kodzie C#.
Bez tej biblioteki nasz kod nie ma dla nas pożytku, ponieważ nie będzie pokazywał wymaganych wyników. Zainicjowaliśmy nową klasę o nazwie „Test” z dwiema funkcjami. Jedną z tych funkcji jest funkcja main () kodu C# i jest to obowiązkowa w każdym kodzie. Bez tej funkcji żadne inne części kodu C# nie zostaną wykonane. Inną funkcją jest funkcja „oblicz” zdefiniowana przez użytkownika, która zostanie użyta do wykonania niektórych obliczeń zmiennych. Wykonanie rozpoczyna się od metody Main ().Wcześniej musimy opisać deklarację niestandardowego delegata zdefiniowanego w pierwszym wierszu testu klasowego.
Zdefiniowaliśmy delegata o nazwie „Custom” o dwóch argumentach typu liczb całkowitych (i.mi. x i y), odwołując się do tej samej funkcji argumentu nazwy i typu w kodzie. Ten delegat ma „publiczny” modyfikator dostępu i zainicjowany słowem kluczowym „delegat”, a następnie typ „void”. Ponieważ funkcja obliczeń ma tę samą nazwę i typy argumentów, delegat ten musi odwoływać się do funkcji „oblicz”. W metodzie main () utworzyliśmy obiekt „a” delegata „niestandardowy”, aby odwołać się do funkcji „oblicz”. Teraz, aby przekazać wartości do funkcji „oblicz”, będziemy używać obiektu „a” delegata niestandardowego (i.mi. 14 i 7.) Teraz, gdy wartość zostanie przekazana, funkcja obliczeń zostanie wykonana przy użyciu tych wartości. Istnieje 4 konsola.Instrukcje funkcji writeLine () są używane w funkcji obliczeniowej do wykonywania różnych operacji (i.mi. suma i odejmowanie 2 wartości, mnożenie 2 wartości i podział dwóch wartości przy użyciu x i y.)
Chodzi o użycie niestandardowego delegata w C#. Skompilujmy ten kod C# w terminalu Linux za pomocą kompilatora C# „MCS”. Po skompilowaniu kompilator utworzy plik „EXE” do wykonania. Teraz musimy użyć tego pliku „exe” w terminalu z instrukcją „mono”, aby wykonać nasz kod. Okazuje się, że delegat działa, podobnie jak obiekt klasowy, odwołuje się do funkcji obliczeniowej, aby przekazać jej wartości i obliczyć sumę, odejmowanie, mnożenie i wyniki podziału i.mi. Odpowiednio 21, 7, 98 i 2.
Przykład nr 02:
Delegat akcji zapisuje nas przed definiowaniem niestandardowego delegata w kodzie i nie zwraca wartości. Ponadto zmniejsza również rozmiar kodu. Powiedzmy, jak możemy użyć delegata akcji w tym przykładowym kodzie? Tak więc rozpoczynaliśmy tę samą strukturę kodu C# tutaj przy użyciu biblioteki „System” i klasy „test” w niej. Następnie dodaliśmy 2 funkcje (i.mi. zdefiniowana przez użytkownika funkcja obliczeń i funkcja wbudowana main ().)
W ramach funkcji obliczeniowej używamy tej samej 4 konsoli.WriteLine () instrukcje funkcji w celu obliczenia sumy, odejmowania, mnożenia i wartości podziału zmiennych „x” i „y” typu liczb całkowitych. Podczas gdy funkcja main () zawiera inicjalizację delegata akcji „a” ze słowem kluczowym „Działanie”, a następnie znakami „” określającymi typy zwrotów dla wartości parametrycznych przekazanych przez tego delegata do funkcji obliczeniowej. Teraz funkcja obliczeniowa staje się odniesieniem do delegowania akcji „a” i użyliśmy jej do przekazania dwóch wartości 7 i 14 do funkcji „oblicz” bez wywoływania jej. Widać, że nie musimy deklarować delegata akcji, tak jak dla niestandardowych, i to również zmniejszyło rozmiar kodu. Zapiszmy ten kod i użyj go podczas wykonania.
Po kompilacji tego kodu i wykonaniu jego pliku „exe” otrzymaliśmy ten sam wynik dla sum. Zarówno delegaci niestandardowe, jak i akcji działają dość podobnie, ale musimy najpierw zdefiniować niestandardowy delegat.
Przykład nr 03:
Zobaczmy, jak reaguje delegat akcji, gdy używamy instrukcji powrotu w kodzie. Zaktualizowaliśmy więc nasz kod i dodaliśmy do niego funkcję obliczeń i main (). W ramach main () tego kodu stworzyliśmy delegat akcji „A” dwóch parametrów liczb całkowitych w celu odniesienia funkcji obliczeniowej. Obiekt delegata akcji „A” służy do przekazywania dwóch liczb całkowitych do funkcji obliczania bez wywoływania funkcji obliczeniowej i zainicjowania liczb całkowitych „S”, aby odzyskać obliczony wynik w Main ().
Konsola.Funkcja writeLine () została użyta do wyświetlania zwróconej wartości z funkcji obliczeniowej do wyświetlenia na naszym ekranie powłoki. W ramach funkcji obliczeniowej zainicjowaliśmy zmienną całkowitą „sumę” obliczając sumę dwóch wartości za pomocą dwóch zmiennych „x” i „y”. Po obliczeniu sumy zwróciliśmy zmienną „sumę” do funkcji Main (). Teraz oczekujemy, że daje nam to błąd w kompilacji.
Tak więc po skompilowaniu „delegata.plik CS ”z kompilatorem C#, mamy błąd.
Zaktualizujmy kod, aby zobaczyć różne użycie delegata akcji. Więc dodaliśmy prostą funkcję main () w klasie testowej. Zainicjowaliśmy delegat akcji „a”, a następnie parametr typu ciągu. Aby odwołać się do niektórych zmiennych ciągów, musimy użyć delegata słowa kluczowego, a następnie nazwy zmiennej i jej typu w parametrach (i.mi. "S".) Konsola.Instrukcja writeLine () będzie wyświetlała wartość łańcucha. Poza funkcją Main (), nazwaliśmy delegat akcji i przekazaliśmy jej wartość ciągów „Hello World”.
Po skompilowaniu i wykonaniu naszego kodu wyświetlał nasz ciąg za pomocą delegatu akcji „A”.
Wniosek:
Ten artykuł pokazuje koncepcję delegatów z niektórymi przykładami. Badaliśmy użycie i strukturę niestandardowych delegatów, abyśmy mogli porównać je z delegatami akcji. Omówiliśmy również niektóre przykłady korzystania z delegatów akcji i wyjaśniliśmy, w jaki sposób delegaci działań różnią się od niestandardowych delegatów, w jaki sposób mogą zmniejszyć rozmiar kodu i jak reaguje on na wykorzystanie instrukcji powrotu.