c delegate tutorial how instantiate
Tento výukový program vysvetľuje, ako používať delegáta C # pomocou jednoduchých príkladov kódu. Dozviete sa tiež o delegátoch viacnásobného vysielania v jazyku C #:
Čo sú delegáti jazyka C #?
V C # sú delegáti podobní ukazovateľom dostupným v C ++. V zásade ide o premennú typu odkazu, ktorá obsahuje odkaz na inú metódu.
Ďalej sa jeho referencia nemôže počas behu meniť. Je k dispozícii vo vnútri triedy System.Delegate. Delegát sa používa na spracovanie funkcie spätného volania alebo obsluhy udalosti.
Je to ako ukazovateľ na funkciu a dá sa deklarovať pomocou delegáta kľúčového slova, za ktorým nasleduje podpis funkcie.
=> Prečítajte si celú školiacu sériu C # tu
Deklarácia delegáta tiež určuje metódu, na ktorú sa môže delegát odvolávať, t. J. Môže ísť o referenčnú metódu, ktorá má rovnaký podpis ako delegát.
Čo sa dozviete:
Vytvorenie inštancie delegáta v jazyku C #
Po vyhlásení delegáta ho možno vytvoriť inštanciu s novým kľúčovým slovom a potom ho treba priradiť k metóde. Rovnako ako v prípade metódy, aj vo výraze je potrebné uviesť argument.
Pozvanie delegáta
Delegáta možno vyvolať rovnako ako metódu.
Príklad:
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'); } }
Výkon
Výstupom vyššie uvedeného programu bude:
Delegát ukazujúci na metódu
Vysvetlenie
otvorte hashovaciu tabuľku adresovania c ++
Vo vyššie uvedenom programe sme vytvorili objekt delegáta a nasmerovali ho na metódu, ktorú musíme vyvolať. Potom sme pomocou metódy invoke () vyvolali metódu pomocou príkazu „delegát“.
Prečo musíme používať delegáta C #?
Metódu sme mohli zavolať priamo z našej hlavnej metódy, ale prečo vlastne potrebujeme použiť delegáta?
Delegát v jednoduchom jazyku znamená zástupcu pre komunikáciu medzi dvoma skupinami. Aj v programovacom kontexte má podobnú úlohu. Používa sa na spätné volania.
Predpokladajme, že máme dlhodobú metódu a musíme priebežne kontrolovať priebeh behu. K tomu používame spätné volanie pomocou delegáta. To nám umožňuje sledovať dlhodobú metódu.
Napríklad:
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++; } } }
Výstupom vyššie uvedeného programu bude:
Výkon
Aktuálne náhodné číslo je: 1559
Aktuálne náhodné číslo je: 6127
Aktuálne náhodné číslo je: 6639
Aktuálne náhodné číslo je: 3963
Aktuálne náhodné číslo je: 4479
Aktuálne náhodné číslo je: 6898
Aktuálne náhodné číslo je: 1390
Aktuálne náhodné číslo je: 6409
Aktuálne náhodné číslo je: 2629
Aktuálne náhodné číslo je: 5464
Vo vyššie uvedenom programe sme pomocou delegáta získali spätné volanie z metódy „generateNumber“, ktorá generuje náhodné celé číslo pre danú iteráciu. Táto iterácia môže byť obrovská. Delegát sa tu teda používa na spätné volanie zakaždým, keď sa v metóde vygeneruje náhodné celé číslo.
Čo je delegát multicastu v C #?
Delegát môže poukázať na niekoľko rôznych metód. Delegát, ktorý poukazuje na niekoľko rôznych metód, je známy ako multicastový delegát. Znak „+“ (operátor) sa používa na pridanie funkcie k delegátovi a znak „-“ (operátor) sa používa na odstránenie akejkoľvek existujúcej funkcie pripojenej k delegátovi.
Delegát viacnásobného vysielania volá funkcie, na ktoré je poukázaný, a iba ten istý typ funkcií je možné kombinovať a vytvoriť delegáta s viacerými obsadeniami. To možno použiť na vytvorenie zoznamu metód, ktoré je potrebné vyvolať volaním jedného delegáta.
Pozrime sa na jednoduchý program, ktorý tomu porozumie:
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(); } }
Výkon
hodnota prvej metódy 5
hodnota druhej metódy 50
Vo vyššie uvedenom programe sme deklarovali delegáta IntegerCounter. Potom sme vytvorili dve rôzne metódy, ktoré vykonávajú určitú operáciu s celočíselnou hodnotou. Potom v hlavnej metóde sme inicializovali delegáta pre obe definované metódy.
Potom sme najskôr použili objekt delegáta na ukážku na prvú inicializovanú metódu delegáta a potom sme znak „+“ použili na multicastové delegovanie a ukážku na inú metódu. Potom, ak odovzdáme celočíselný parameter, obe metódy dostanú ten istý parameter a budú vykonané.
čo je stringstream v c ++
Záver
Delegát je ukazovateľ na funkciu. Metóda, ktorá bude používať delegáta, musí mať rovnaký parameter a návratový typ.
Delegáta možno vyhlásiť za podobného funkcii a možno ho rovnako vyvolať. Delegát multicast je, keď delegáta použijeme na poukázanie na viac metód a na použitie multicast sa použije operátor plus „+“.
=> Preskúmajte celú sériu výcvikových kurzov C # tu
Odporúčané čítanie
- Ladenie selénových skriptov pomocou denníkov (výučba Log4j) - výučba selénu č. 26
- Efektívne skriptovanie selénu a riešenie problémov - scenáre selénu # 27
- Implementácia nášho prvého skriptu WebDriver - výučba selénu WebDriver č. 10
- Celé nastavenie a inštalácia WebDriver s výučbou Eclipse - Selenium č. 9
- Úvod do softvéru Selenium WebDriver - Výučba selénu č. 8
- Vytváranie generík a testovacích súprav - selén, návod č. 22
- Ako zvládnuť výnimku v skriptoch SoapUI Groovy - SoapUI Tutorial # 11
- Ako na diaľku aktualizovať stav spustenia testovacieho prípadu TestLink prostredníctvom selénu - návod č. 3