c delegate tutorial how instantiate
Ovaj vodič objašnjava kako koristiti delegata C # uz pomoć jednostavnih primjera koda. Također ćete saznati više o delegatima za višestruko slanje u C #:
Što su delegati C #?
U C #, delegati su slični pokazivačima dostupnim na C ++. To je u osnovi varijabla referentnog tipa koja sadrži referencu na drugu metodu.
Nadalje, njegova referenca ne može se mijenjati tijekom vremena izvođenja. Dostupan je unutar klase System.Delegate. Delegat se koristi za upravljanje funkcijom povratnog poziva ili rukovateljem događaja.
To je poput pokazivača na funkciju i može se deklarirati pomoću ključne riječi delegat nakon čega slijedi potpis funkcije.
=> Ovdje pročitajte cijelu seriju C # treninga
Izjava delegata također određuje metodu na koju se delegat može uputiti, tj. To može biti referentna metoda koja ima isti potpis kao delegat.
Što ćete naučiti:
Instanciranje delegata u C #
Jednom kada je delegat proglašen, može se stvoriti instanca s novom ključnom riječi, a zatim ga treba povezati s metodom. Baš poput metode, izraz mora proslijediti argument.
Pozivanje delegata
Delegat se može pozvati baš poput metode.
Primjer:
class Program { public delegate void methodDelegate(); public static void Main(string() args) { methodDelegate md = new methodDelegate(method); md.Invoke(); } public static void method() { Console.WriteLine('Delegate pointing to method'); } }
Izlaz
Rezultat gore navedenog programa bit će:
Delegat koji pokazuje na metodu
Obrazloženje
pitanja i odgovori na testovima osiguranja kvalitete
U gore navedenom programu stvorili smo objekt delegata i usmjerili ga prema metodi na koju se moramo pozvati. Tada smo koristili invoke () za pozivanje metode pomoću 'delegat'.
Zašto trebamo koristiti C # delegat?
Mogli smo pozvati metodu izravno iz naše glavne metode, ali zašto zaista moramo koristiti delegata?
Delegat na jednostavnom jeziku znači predstavnik za komunikaciju između dviju skupina. Čak iu programskom kontekstu ima sličnu ulogu. Koristi se za povratne pozive.
Pretpostavimo da imamo dugotrajnu metodu i moramo kontinuirano provjeravati taj napredak. Da bismo to učinili, koristimo povratni poziv pomoću delegata. To nam omogućuje praćenje dugotrajne metode.
Na primjer:
public class Program { One on = new One(); public static void Main(string() args) { One.generateNumbers(callDelegate); Console.ReadLine(); } public static void callDelegate(int j) { Console.WriteLine('The current random number is :' + j); } } public class One { public delegate void callingDelegate(int j); public static void generateNumbers(callingDelegate cd) { Random rn = new Random(); int i = 0; int j = 0; while (i <10) { j = rn.Next(9999); cd(j); i++; } } }
Rezultat gore navedenog programa bit će:
Izlaz
Trenutni slučajni broj je: 1559
Trenutni slučajni broj je: 6127
Trenutni slučajni broj je: 6639
Trenutni slučajni broj je: 3963
Trenutni slučajni broj je: 4479
Trenutni slučajni broj je: 6898
Trenutni slučajni broj je: 1390
Trenutni slučajni broj je: 6409
Trenutni slučajni broj je: 2629
Trenutni slučajni broj je: 5464
U gore navedenom programu koristili smo delegata da bismo dobili povratni poziv iz metode „generirajbroj” koja generira slučajni cijeli broj za datu iteraciju. Ova iteracija može biti ogromna. Stoga se ovdje delegat koristi za povratni poziv svaki put kada se u metodi generira slučajni cijeli broj.
Što je delegat multicast-a u C #?
Delegat može ukazati na nekoliko različitih metoda. Delegat koji upućuje na nekoliko različitih metoda poznat je pod nazivom multicast delegat. Znak '+' (operator) koristi se za dodavanje funkcije delegatu, a znak '-' (operator) koristi se za uklanjanje bilo koje postojeće funkcije koja je pridružena delegatu.
Multicast delegat poziva funkcije na koje je ukazano i samo se iste vrste funkcija mogu kombinirati kako bi se formirao delegirani multi-cast. To se može koristiti za stvaranje popisa metoda na koje se treba pozvati pozivanjem jednog delegata.
Pogledajmo jednostavan program kako bismo to razumjeli:
što je testiranje sustava na primjeru
Program
public class Program { delegate void IntegerCounter(int n); public static void method_A(int a) { a = a + 5; Console.WriteLine('the value of first method {0}', a); } public static void method_B(int b) { b = b * 5; Console.WriteLine('the value of second method {0}', b); } public static void Main(string() args) { //creating instance of the delegate IntegerCounter x; IntegerCounter y = new IntegerCounter(method_A); IntegerCounter z = new IntegerCounter(method_B); x = y; x += z; x(10); Console.ReadLine(); } }
Izlaz
vrijednost prve metode 5
vrijednost druge metode 50
U gore navedenom programu proglasili smo delegata IntegerCounter. Tada smo stvorili dvije različite metode koje izvode određenu operaciju nad cijelom vrijednošću. Zatim smo u glavnoj metodi inicijalizirali delegat za obje definirane metode.
Tada smo prvo upotrijebili objekt delegata kako bismo usmjerili na prvu inicijaliziranu metodu delegata, a nakon toga koristili smo znak '+' za multicast delegat i usmjerili na drugu metodu. Tada, ako proslijedimo cjelobrojni parametar, obje metode će primiti isti parametar i izvršit će se.
Zaključak
Delegat je pokazivač na funkciju. Metoda koja će koristiti delegat mora imati isti parametar i tip povratka.
Delegat se može proglasiti sličnim funkciji, a može se i slično pozvati. Delegat multicast-a je kada koristimo delegata za usmjeravanje na više metoda, a operator plus + koristi se za upotrebu multicast-a.
=> Ovdje istražite cijelu seriju vodiča za obuku za C #
Preporučena literatura
- Otklanjanje pogrešaka u skriptama za selen sa zapisnicima (Vodič za Log4j) - Vodič za selen # 26
- Učinkoviti scenariji za skriptiranje i rješavanje problema sa selenom - Vodič za selenij br. 27
- Implementacija naše prve skripte WebDriver - Vodič br. 10 za Selenium WebDriver
- Cjelokupno postavljanje i instaliranje WebDriver-a s Eclipseom - Selen Tutorial # 9
- Uvod u Selenium WebDriver - Vodič za selen br. 8
- Izrada generičkih lijekova i testova - Vodič za selen br. 22
- Kako postupati s iznimkom u Groovy skriptama SoapUI - Vodič za SoapUI br. 11
- Kako ažurirati status izvršenja testnog slučaja na daljinu putem selena - Tutorial # 3