Hvis du noen gang har brukt pekere på noe programmeringsspråk, kan du ha en ide om referansen. C# delegater fungerer på samme måte som pekere gjør. Akkurat som om vi refererer til funksjonene som bruker pekere, kan vi bruke delegater for å referere til funksjonen i C#. Delegatene er med vilje bygget for å lage tilbakeringingsfunksjoner og legge til hendelser. Dette betyr at en delegat kan bestemme hvilken metode som skal utføres på hvilket tidspunkt i C#. Delegater hjelper oss med å innkapsle funksjonene og kan utføre mer enn to funksjoner for en solo -hendelse. Delegater har tilpassede og handlingstyper. I denne guiden har vi bestemt oss for å dekke begge typene og spesielt "handling" -typen. La oss komme i gang med C# File Creation in the Shell for å se på delegatene.
Eksempel # 01:
Uten å se på den tilpassede delegaten, kan vi ikke forstå viktigheten av handlingsdelegaten i C#. Innenfor dette eksemplet vil vi diskutere den tilpassede delegaten først. Vi har brukt "System" -biblioteket i koden med nøkkelordet "Bruker". Dette biblioteket er et must i hver C# -kode fordi det får oss til å bruke mange standardbruksfunksjoner og utsagn i C# -koden.
Uten dette biblioteket har koden vår ingen bruk for oss fordi den ikke vil vise de nødvendige resultatene. Vi har initialisert en ny klasse som heter "test" med to funksjoner i den. En av disse funksjonene er hoved () -funksjonen til C# -kode, og den er et must i hver kode. Uten denne funksjonen blir ingen andre deler av C# -koden utført. En annen funksjon er den brukerdefinerte "beregne" -funksjonen, som vil bli brukt til å utføre noen beregninger på variabler. Utførelsen starter fra Main () -metoden.Før det må vi beskrive erklæringen om en tilpasset delegat som er definert i den første linjen i klassetesten.
Vi har definert en delegat som heter “Custom” med to argumenter av heltalltype (i.e. x og y), og refererer til samme navn og type argumentfunksjon i koden. Denne delegaten er av "offentlig" tilgangsmodifiserer og initiert med søkeordet "delegat" etterfulgt av "tomrom" -typen. Siden beregningsfunksjonen har samme navn og typer argumenter i den, må denne delegaten referere til "beregning" -funksjonen. Innenfor Main () -metoden har vi laget et objekt “A” av delegat “Custom” for å referere til “beregne” -funksjonen. Nå, for å overføre verdier til "beregne" -funksjonen, vil vi bruke objektet "A" for den tilpassede delegaten (i.e. 14, og 7.) Nå, når en verdi sendes, vil beregnefunksjonen bli utført ved hjelp av disse verdiene. Det er 4 konsoll.WritLine () -funksjonsuttalelser brukes i beregningsfunksjonen for å utføre forskjellige operasjoner (i.e. Summen og subtraksjon av 2 verdier, multiplikasjon av 2 verdier og deling av to verdier ved bruk av x og y.)
Dette handler om bruk av tilpasset delegat i C#. La oss nå sammenstille denne C# -koden i Terminalen til Linux ved hjelp av en C# “MCS” -kompilator. Etter å ha sammenstilt den, vil kompilatoren opprette en "exe" -fil for utførelse. Nå må vi bruke denne "exe" -filen i terminalen med "mono" -instruksjonen for å utføre koden vår. Det viser seg at delegaten fungerer, som et klasseobjekt, blir referert til beregningsfunksjonen for å passere verdiene og beregne sum, subtraksjon, multiplikasjon og divisjonsresultat i.e. 21, 7, 98 og 2 henholdsvis.
Eksempel # 02:
Handlingsdelegaten sparer oss fra å definere den tilpassede delegaten i koden, og den returnerer ikke en verdi. Det reduserer også størrelsen på en kode også. La oss si hvordan vi kan bruke en handlingsdelegat i denne eksemplet kode? Så vi har startet den samme kodestrukturen til C# her ved hjelp av "System" -biblioteket, og "Test" -klassen i den. Etter det har vi lagt til to funksjoner (i.e. brukerdefinert beregne funksjon og den innebygde main () -funksjonen.)
Innenfor beregningsfunksjonen har vi brukt den samme 4 -konsollen.WritLine () funksjonserklæringer for å beregne summen, subtraksjon, multiplikasjon og delingsverdi av variabler “x” og “y” av heltallstype. Mens hovedfunksjonen () inneholder initialiseringen av en handlingsdelegat “A” med nøkkelordet “Handling” etterfulgt av “" -tegnene som spesifiserer returtypene for parametriske verdier som er gitt av denne delegaten til beregningsfunksjonen. Nå blir beregningsfunksjonen referansen til handlingsdelegat “A”, og vi har brukt den til å passere to verdier 7 og 14 til funksjonen “Beregn” uten å ringe den. Du kan se at vi ikke trenger å erklære en handlingsdelegat som vi gjorde for skikk, og det har også redusert størrelsen på en kode litt. La oss lagre denne koden og bruke den ved utførelse.
Etter samlingen av denne koden og utførelsen av "exe" -filen, har vi fått samme resultat for sum og multiplikasjon, mens vi er litt annerledes for subtraksjon og divisjon. Både tilpassede og handlingsdelegater fungerer ganske likt, men vi må definere den tilpassede delegaten først.
Eksempel # 03:
La oss se hvordan en handlingsdelegat reagerer når vi bruker en returerklæring i koden. Så vi har oppdatert koden vår og lagt til beregnings- og main () -funksjonen til den. Innenfor hoved () av denne koden har vi opprettet en handlingsdelegat "A" av to heltallparametere for å referere til beregningsfunksjonen. Et handlingsdelegatobjekt “A” brukes til å passere to heltall til beregningsfunksjonen uten å kalle beregningsfunksjonen og initialiserte et heltall “S” for å få det beregnede resultatet tilbake i hoved ().
Konsollen.WritLine () -funksjonen har blitt brukt til å vise den returnerte verdien fra beregningsfunksjonen for å vises på skallskjermen vår. Innenfor beregningsfunksjonen har vi initialisert en heltallvariabel "sum" som beregner summen av to verdier ved å bruke to variabler “x” og “y”. Etter å ha beregnet summen, har vi returnert "sum" -variabelen til Main () -funksjonen. Nå forventer vi at det gir oss en feil ved samlingen.
Så etter å ha samlet “delegaten.cs ”-fil med kompilatoren av C#, vi har en feil.
La oss oppdatere koden for å se den forskjellige bruken av handlingsdelegat. Så vi har lagt til en enkel Main () -funksjon innen testklassen. Vi har initialisert en handlingsdelegat “A” innen den etterfulgt av parameteren til strengtypen. For å referere til en strengvariabel, må vi bruke nøkkelords delegat etterfulgt av navnet på en variabel og dens type i parametere (i.e. “S”.) Konsollen.Uttalelse () uttalelse vil vise verdien av en streng. Utenfor Main () -funksjonen har vi kalt Action -delegaten og gitt den en strengverdi “Hello World”.
Etter å ha sammenstilt og utført koden vår, viste den strengen vår ved å bruke handlingsdelegaten “A”.
Konklusjon:
Denne artikkelen demonstrerer konseptet med delegater med noen av eksemplene. Vi har studert bruken og strukturen til tilpassede delegater slik at vi kan sammenligne dem med handlingsdelegatene. Vi har også diskutert noen eksempler for bruk av handlingsdelegater og forklart hvordan handlingsdelegatene er forskjellige fra de tilpassede delegatene, hvordan de kan redusere størrelsen på en kode, og hvordan den reagerer på bruk av returerklæringen.