c delegate tutorial how instantiate
V tej vadnici je razloženo, kako uporabiti delegata C # s pomočjo preprostih primerov kode. Izvedeli boste tudi več delegatov v C #:
Kaj so delegati C #?
V C # so delegati podobni kazalcem, ki so na voljo v jeziku C ++. V bistvu gre za spremenljivko referenčnega tipa, ki vsebuje sklic na drugo metodo.
Poleg tega njegove reference v času izvajanja ni mogoče spremeniti. Na voljo je znotraj razreda System.Delegate. Delegat se uporablja za obdelavo funkcije povratnega klica ali za obdelavo dogodkov.
Je kot kazalec na funkcijo in ga je mogoče deklarirati z uporabo delegata ključne besede, čemur sledi podpis funkcije.
=> Tukaj preberite celotno serijo usposabljanj za C #
Izjava delegata določa tudi metodo, na katero se lahko sklicuje delegat, to je lahko referenčna metoda, ki ima enak podpis kot delegat.
Kaj se boste naučili:
Posredovanje delegata v C #
Ko je delegat razglašen, ga lahko ustvari z novo ključno besedo, nato pa ga je treba povezati z metodo. Tako kot metoda mora tudi izraz prenesti argument.
Klicanje delegata
Delegata lahko prikličete tako kot metodo.
Primer:
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'); } }Izhod
Rezultat zgornjega programa bo:
Delegat, ki kaže na metodo
Pojasnilo
najboljši brezplačni protivohunski program za pc
V zgornjem programu smo ustvarili objekt delegata in ga usmerili proti metodi, ki jo moramo uporabiti. Nato smo uporabili invoke () za priklic metode z uporabo 'delegat'.
Zakaj moramo uporabljati delegata C #?
Metodo bi lahko poklicali neposredno iz naše glavne metode, a zakaj v resnici moramo uporabiti delegata?
Delegat v preprostem jeziku pomeni predstavnika za komunikacijo med dvema skupinama. Tudi v programskem kontekstu ima podobno vlogo. Uporablja se za povratne klice.
Predpostavimo, da imamo dolgotrajno metodo in moramo neprekinjeno preverjati napredek teka. Za to uporabimo povratni klic z delegatom. To nam omogoča, da sledimo dolgotrajni metodi.
Na primer:
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 zgornjega programa bo:
Izhod
Trenutno naključno število je: 1559
Trenutno naključno število je: 6127
Trenutno naključno število je: 6639
Trenutno naključno število je: 3963
Trenutno naključno število je: 4479
Trenutna naključna številka je: 6898
Trenutno naključno število je: 1390
Trenutno naključno število je: 6409
Trenutno naključno število je: 2629
Trenutno naključno število je: 5464
V zgornjem programu smo z delegatom dobili povratni klic iz metode »generiraj_številko«, ki generira naključno celo število za določeno ponovitev. Ta ponovitev je lahko ogromna. Zato se delegat tukaj uporablja za povratni klic vsakič, ko v metodi nastane naključno celo število.
Kaj je delegat multicast v C #?
Delegat lahko opozori na več različnih metod. Delegat, ki kaže na več različnih metod, je znan kot delegat večkastnega pošiljanja. Znak '+' (operator) se uporabi za dodajanje funkcije v delegat, znak '-' (operator) pa za odstranitev katere koli obstoječe funkcije, ki je pritrjena na delegata.
varen sistem za prenos datotek protokol in vrata
Večnamenski delegat pokliče funkcije, na katere je opozorjen, in samo isti tip funkcij je mogoče kombinirati, da tvori delegat z več oddajami. S tem lahko ustvarite seznam metod, ki jih je treba priklicati s klicem enega samega delegata.
Oglejmo si preprost program, da to razumemo:
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(); } }Izhod
vrednost prve metode 5
vrednost druge metode 50
V zgornjem programu smo razglasili pooblaščenca IntegerCounter. Nato smo ustvarili dve različni metodi, ki izvajata določeno operacijo nad celoštevilčno vrednostjo. Nato smo v glavni metodi inicializirali delegat za obe opredeljeni metodi.
Nato smo najprej uporabili objekt delegat, da smo pokazali na prvo inicializirano metodo delegata, po tem pa smo uporabili znak '+' za multicast delegat in usmerili na drugo metodo. Potem, če posredujemo celoštevilski parameter, bosta obe metodi prejeli isti parameter in se bosta izvedli.
Zaključek
Delegat je kazalec na funkcijo. Metoda, ki bo uporabila pooblaščenca, mora imeti enak parameter in vrsto vrnitve.
Delegat je lahko razglašen za podoben funkciji in ga je mogoče tudi podobno poklicati. Delegat večkastnega pošiljanja je, ko z delegatom pokažemo na več metod, za uporabo večkastnega pa se uporablja operator plus +.
=> Tukaj raziščite celotno serijo vadnic za C #
Priporočeno branje
- Odpravljanje napak v skriptih selena z dnevniki (Vadnica za Log4j) - Vadnica za selen # 26
- Učinkoviti scenariji za skriptiranje in odpravljanje težav s selenom - Vadnica za selenij št. 27
- Implementacija našega prvega skripta WebDriver - vadnica # 10 za selenium WebDriver
- Celotna namestitev in namestitev WebDriverja z Eclipse - Vadnica za selen št. 9
- Uvod v Selenium WebDriver - Vadnica za selenij št. 8
- Ustvarjanje generičnih izdelkov in testnih kompletov - Vadnica za selen št. 22
- Kako ravnati z izjemami v skriptih Groovy SoapUI - Vadnica SoapUI št. 11
- Kako na daljavo posodobiti stanje izvedbe testnega primera TestLink prek selena - Tutorial # 3