c delegate tutorial how instantiate
Denne opplæringen forklarer hvordan du bruker en C # -delegert ved hjelp av enkle kodeeksempler. Du vil også lære om multicast-delegater i C #:
Hva er C # delegater?
I C # ligner delegater pekere som er tilgjengelige i C ++. Det er i utgangspunktet en referansetypevariabel som inneholder en referanse til en annen metode.
Videre kan ikke referansen endres i løpet av kjøretiden. Den er tilgjengelig i System.Delegate klasse. En delegat brukes til å håndtere tilbakeringingsfunksjon eller en hendelsesbehandler.
Det er som en peker til en funksjon og kan erklæres ved hjelp av søkeorddelegaten etterfulgt av signaturen til funksjonen.
=> Les gjennom hele C # Training Series her
Erklæringen fra delegaten bestemmer også metoden som kan henvises av delegaten, dvs. det kan være en referansemetode som har samme signatur som en delegat.
Hva du vil lære:
Instantierende delegat i C #
Når delegaten er erklært, kan den instantieres med det nye nøkkelordet, og deretter må det knyttes til metoden. Akkurat som en metode, må uttrykket passere et argument.
Påkalle en delegat
En delegat kan påberopes akkurat som en metode.
Eksempel:
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'); } }
Produksjon
Resultatet av programmet ovenfor vil være:
Delegat som peker på metode
Forklaring
vr headset som fungerer med xbox one
I programmet ovenfor har vi opprettet et objekt fra delegaten og pekt det mot metoden vi trenger å påberope. Så brukte vi påkalle () for å påkalle metoden ved hjelp av ‘delegat’.
Hvorfor trenger vi å bruke C # delegat?
Vi kunne ha kalt metoden direkte fra vår hovedmetode, men hvorfor trenger vi egentlig å bruke en delegat?
Delegat på enkelt språk betyr en representant for kommunikasjon mellom to grupper. Selv i programmeringssammenheng har den en lignende rolle. Den brukes til tilbakeringing.
La oss anta at vi har en langvarig metode, og vi må kontrollere løpets fremgang kontinuerlig. For å gjøre det bruker vi tilbakeringing ved hjelp av en delegat. Dette gjør at vi kan holde rede på den langvarige metoden.
For eksempel:
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++; } } }
Resultatet av programmet ovenfor vil være:
Produksjon
hva er den beste gratis nedlastingsappen for musikk for android
Det nåværende tilfeldige tallet er: 1559
Det nåværende tilfeldige tallet er: 6127
Det nåværende tilfeldige tallet er: 6639
Det nåværende tilfeldige tallet er: 3963
Det nåværende tilfeldige tallet er: 4479
Det nåværende tilfeldige tallet er: 6898
Det nåværende tilfeldige tallet er: 1390
Det nåværende tilfeldige tallet er: 6409
Det nåværende tilfeldige tallet er: 2629
Det nåværende tilfeldige tallet er: 5464
I det ovennevnte programmet brukte vi en delegat for å få tilbakeringing fra 'genererNummer' -metoden som genererer et tilfeldig heltall for en gitt iterasjon. Denne iterasjonen kan være enorm. Derfor blir delegaten her brukt til å få et anrop tilbake hver gang et tilfeldig heltall genereres i metoden.
Hva er en multicast-delegat i C #?
En delegat kan peke på flere forskjellige metoder. En delegat som peker på flere forskjellige metoder er kjent som en multicast-delegat. Et “+” -tegn (operatør) brukes til å legge til en funksjon til delegaten, og “-“ -tegnet (operatør) brukes til å fjerne eksisterende funksjoner tilknyttet delegaten.
En multicast-delegat kaller funksjonene den er pekt på, og bare samme type funksjoner kan kombineres for å danne en multi-cast-delegat. Dette kan brukes til å lage en liste over metoder som må påkalles ved å ringe en enkelt delegat.
La oss se på et enkelt program for å forstå dette:
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(); } }
Produksjon
verdien av første metode 5
verdien av andre metode 50
I programmet ovenfor erklærte vi en delegat IntegerCounter. Deretter opprettet vi to forskjellige metoder som utfører en bestemt operasjon på heltallverdien. Så i hovedmetoden initialiserte vi delegat for begge de definerte metodene.
Så brukte vi først delegatobjektet for å peke på den første initialiserte delegatmetoden, og etter det brukte vi '+' - tegnet til multicastdelegat og pekte på en annen metode. Så hvis vi sender et heltallsparameter vil begge metodene motta den samme parameteren og vil bli utført.
Konklusjon
En delegat er en peker til en funksjon. Metoden som skal bruke delegaten må ha samme parameter og returtype.
Delegaten kan erklæres lik en funksjon og kan også påberopes på samme måte. En multicast-delegat er når vi bruker delegaten til å peke på flere metoder, og en pluss '+' -operatør brukes til å bruke multicast.
=> Utforsk hele serien av C # Training Tutorials her
Anbefalt lesing
- Feilsøking av selen-skript med logger (Log4j-opplæring) - Selen-opplæring # 26
- Effektiv Selen Scripting og feilsøking av scenarier - Selenium Tutorial # 27
- Implementering av vårt første WebDriver Script - Selenium WebDriver Tutorial # 10
- WebDriver Hele installasjonen og installasjonen med Eclipse - Selenium Tutorial # 9
- Introduksjon til Selen WebDriver - Selenium Tutorial # 8
- Lage generikk og testdrakter - Selen-opplæring # 22
- Hvordan håndtere unntak i SoapUI Groovy Scripts - SoapUI Tutorial # 11
- Hvordan oppdatere TestLink Test Case Execution Status eksternt gjennom Selen - Veiledning nr. 3