C# pass ved referanse

C# pass ved referanse
Mens du jobber i noe objektorientert programmering, kan du ha prøvd begrepet verdiskasting som referanse i kodene, i.e. C, c++. Pass med referanse midler for å indikere minneplassen til en viss variabel uten å lage kopier. Referansene brukes sannsynligvis til å utføre visse endringer og få dem til å reflektere på det opprinnelige minneplassen uten noe problem. Vi har en tendens til å bruke "&" -karakteren i objektorienterte språk for å utføre pass-by-referanser.

Innen C#utfører vi passeringsverdiene ved referanse ved å bruke nøkkelordet “Ref”. La oss se hvordan det fungerer. Fra og med implementering av denne guiden, må vi ha en C# -fil for å lage noen programmeringskoder i den. Så langt så bra; Vi har brukt Ubuntus "Touch" -spørsmål for å generere en ny C# -fil i den nåværende arbeidskatalogen til vårt Linux -system.

Eksempel 01

Vi starter vårt første eksempel på denne koden med definisjonen av C# -programstrukturen. Så vi åpnet C#, opprettet en fil i den innebygde tekstredigereren til Ubuntu 20.04, og la til "system" -biblioteket på sin første linje. Dette biblioteket er hovedinngangen og utgangskilden i C# -kodene. Uten dette biblioteket har koden vår ingen nytte for oss fordi den ikke vil fungere slik vi vil. Så etter å ha lagt til biblioteket, har vi laget et tilfeldig navneområde "referanse" i denne koden. Dette navneområdet er brukerdefinert.

Vi har også laget en ny brukerdefinert klasse, "Referanse", i dette programmet for å initialisere koden vår med noen implementering. Denne brukerdefinerte "referanse" -klassen inneholder totalt 2 funksjoner i den. Den første funksjonen er den innebygde Main () -funksjonen med returtype “statisk tomrom”, som også sies å være driverfunksjonen til vår C# -kode, i.e. All utførelse starter fra det. Den andre funksjonen er en brukerdefinert tilfeldig funksjon som heter “Update”, og har returtypen “Public Static Void”.

Konsollen.WritLine () -funksjonen er her for å vise den opprinnelige verdien av en variabel “n” som bruker parametrene som vist nedenfor på bildet. Etter dette kalte vi "oppdatering" -funksjonen fra den viktigste passerende variabelen "n" som en parametrisk verdi. Nå går kontrollen til "oppdatering" -funksjonen, som har tatt verdien av variabel "n" som en referanse ved å bruke den nye variabelen "val" av heltallstype. Denne variabelen "Val" vil multiplisere dens beståtte verdien “5” fra hoved- () -funksjonen med “3” og overskrive til variabelen “Val”.

Det er ingen returerklæring her. Utførelsen av oppdateringsfunksjonen er fullført, og kontrollen er tilbake til "hoved" -funksjonen ". Hoved () -funksjonen utfører sin neste konsoll.WritLine () -funksjonen for å vise den oppdaterte verdien av variabel “n” ved å bruke “n” i parametrene. Hoved- () -funksjonen og vår C# -kode er komplette og klare til å brukes. La oss lagre det ved Ctrl+S og avslutte det med Ctrl+X først.

Etter å ha lagret C# -filen, er det første trinnet vi må lage å samle denne koden med C# 's “MCS” -kompilator som allerede er konfigurert i vår Ubuntu 20.04 System. Så vi gjorde det, og "exe" -filen for denne kompilerte koden er automatisk opprettet på samme sted. Vi har brukt “Mono” runtime-utførelsesinstruksjon for C# -koder for å utføre denne “EXE” -filen og fikk det vistede resultatet. Det viser seg at den opprinnelige verdien og den oppdaterte verdien er den samme, i.e. Ingen endringer er gjort så langt.

La oss sjekke ut problemet nå. Når vi prøver å oppdatere verdien av variabel “n” ved å sende den som en referanse, lokaliserer den ikke minneadressen til den opprinnelige variabelen “n”. I stedet opprettet det et annet replikaobjekt med samme navn og verdi og ga den til oppdateringsfunksjonen. Dermed påvirker endringer i det nye objektet ikke den opprinnelige variabelen “n” -verdien.

For å unngå dette problemet kom C# -rammen med det nye nøkkelordet “Ref” for å passere verdier som en referanse til en hvilken som helst funksjonsparameter. Ved hjelp av dette "Ref" nøkkelord.e. peker mot minneplassen til den opprinnelige variabelen. Dermed har vi oppdatert koden vår og brukt 'ref' nøkkelordet mens vi passerer variabelen “n” som en referanse til oppdateringsfunksjonen. Dette nøkkelordet har blitt brukt i Main () -funksjonen mens funksjonsanropet til "oppdatering" -funksjonen og i "oppdatering ()" -funksjonsparametere som vist.

Etter å ha samlet den oppdaterte C# -filen og kjørt sin "EXE" like etter det, har vi blitt presentert med den viste utdata. Denne gangen er verdien “5” for variabel “n” blitt oppdatert til “15” på grunn av bruken av "Ref" -tnøkkelordet for å gi en verdi som referanse.

Eksempel 02

La oss se på et annet eksempel for å utføre bytte ved å passere verdier i parametere. Klassen “Test” har brukt en brukerdefinert “Swap” -funksjon og Main () driverfunksjonen. Utførelsen startet fra Main () -metoden der vi har laget et objekt “T” for klassetest og initialisert to heltallvariabler, V1 og V2, med heltallverdier-konsollen.WritLine () -funksjonsuttalelser viser verdiene til variabler v1 og v2 før byttet.

Etter det kalles byttefunksjonen ved passerende variabler V1 og V2 i parametrene som referanse. Nøkkelordet "Ref" er blitt brukt her for begge variablene. Innenfor implementeringen av "oppdatering" -funksjonen har vi også brukt nøkkelordet "Ref" for både variabler N1 og N2 for å passere verdier ved referanse. For å bytte verdier av en variabel til en annen, må vi ha en tredje verdi for å utføre dette. Den nye variabelen “V” har blitt initialisert i denne funksjonen, og tatt verdien av variabel N1 som den første delen. Verdien av N2 er blitt overskrevet til variabel N1, og verdien av variabel V er lagret til variabel N2. Byttingen av verdi N1 med N2 er gjort her. Hoved () funksjonskonsoll.WritLine () -funksjonen er her for nå å vise de nylig byttede verdiene til N1 og N2.

Etter sammenstilling og utførelse av denne eksemplet har vi verdier av V1 og V2 som 14 og 7 før byttet. Etter byttet viser det seg å være motsatt, jeg.e. v1 = 7 og v2 = 14.

Hvis vi fjerner nøkkelordet "Ref" fra funksjonssamtalen og funksjonsdefinisjonen av "oppdatering" -funksjonen som vi gjorde nedenfor, vil ikke byttet utføres.

Her kan du se utgangen viser at verdiene til V1 og V2 er de samme selv etter å ha brukt byttefunksjonen.

Konklusjon

Denne guiden handler om å bruke nøkkelordet "Ref" i C# for å utføre passeringsverdier med en referanse. Denne referansen er gjort ved å bruke den nøyaktige minnestedet til visse variabler. Innenfor denne guiden har vi diskutert ved hjelp av "Ref" nøkkelordet for å oppdatere den opprinnelige verdien av en variabel ved å multiplisere den med et antall og bytte verdiene til to variabler i to forskjellige eksempler. Dette har blitt utført veldig jevnt med “Ref”.