Forskjellen mellom ref og ut i C #

Forfatter: Laura McKinney
Opprettelsesdato: 2 April 2021
Oppdater Dato: 5 Kan 2024
Anonim
How language shapes the way we think | Lera Boroditsky
Video: How language shapes the way we think | Lera Boroditsky

Innhold


“Ref” og “Out” er parametermodifiserere som brukes i C #. Ved å bruke ref og out kan du passere hvilken som helst verditype ved å referere til hvilken som helst metode. Årsaken til å passere en hvilken som helst verditype ved sin referanse introduserer hovedforskjellen mellom ref og out søkeordet. De ref søkeord tillater den kalte metoden å endre innholdet i argumentet som er gitt til det med ref-nøkkelord. De ute søkeord tillater kalt metode for å returnere mer enn én verdi på en enkelt samtale. La oss studere forskjellen mellom ref og ut sammen med et sammenligningskjema.

  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningRefUte
grunn~~POS=TRUNCDet gjør at endringen i verdien av argumentet fortsatte med ref nøkkelord.Det gjør det mulig for en metode å returnere disse verdiene forut for et ut nøkkelord.
initialiseringRef-parameteren må initialiseres før metodeanropet.Ut-parameteren må initialiseres inne i den anropte metoden før den avsluttes.
ErklæringParameteren som skal endres av en metode blir erklært som ref mens metodedeklarasjon og metodeanrop.Parameteren som skal returneres må deklareres som ref mens metodedeklarasjon og metodeanrop.


Definisjon av Ref nøkkelord

"Ref" er en parametermodifiserer som brukes når det er behov for å ringe en metode med samtale-referanse. Når vi ønsker at endringene som er gjort i argumentene i en kalt metode, må gjenspeile den opprinnelige verdien til den variabelen, brukes ref-parametermodifisereren. Verditypen som vi ønsker å erklære som en ref, er gitt av "ref" nøkkelordet under metodedeklarasjon og metodeanrop. Mer enn en parameter kan deklareres som en "ref" mens du ringer og erklærer en metode.

bruker System; klasse DemoRef {public void Square (ref int s) {s = s * s; }} klasse Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("en før metodeanrop:" + a); ob.Square (ref a); // Brukt ref nøkkelordkonsoll.WriteLine ("en etter samtale:" + a); }} // output a før metodeanrop: 10 a etter metodeanrop: 100

I koden ovenfor overføres variabelen 'a' som et argument til metoden Square (ref a) sammen med parametermodifisereren ref som er knyttet til den. Det betyr at hva som endrer metoden Square (ref a) vil utføre på variabelen 'a' inni den vil reflektere i den opprinnelige verdien til 'a', utenfor metoden også.


Det er noen viktige punkter som må huskes når du arbeider med parametermodifiserer "ref".

  • Argumentet du gir refsen til en metode må initialiseres før metoden ringer.
  • Metoden må ikke tildele startverdien til ref-argumentet.
  • Du kan også bruke ref sammen med referansevariabelen også.

Definisjon av nøkkelord

Hver gang du kaller en metode, vil den bare returnere en enkelt verdi. Hvis du vil at en metode skal returnere mer enn én verdi ved en samtale, må søkeordet "ut" brukes sammen med parametrene du vil returnere når metoden avsluttes. Noen ganger er det slik at når vi ikke vil gi noe til metoden, men ønsker at metoden skal returnere noe, bruker vi parametere med et søkeord uten.La oss forstå det med et eksempel.

bruker System; klasse DemoOut {public int Nedbryt (dobbel x, dobbelt brøk) {int hele_nummer; hele_num = (int) x; brøk = x - hele_nummer; returner hele_num; }} klasse Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; dobbel frac; i = ob.Decompose (100,125, frac); // brukt ut nøkkelord Console.WriteLine ("Hele nummerdelen er" + i); Console.WriteLine ("brøkdel er" + frac); }} // utgang Heltalsdel er 100 Fraksjonsdel er 0,125

I koden over returneres to verdier av metoden Decompose (). Den ene returnerer med nøkkelordet "return", dvs. hele_num, og det andre returnerer en parameter som er gitt av ut-søkeordet mens metoden kaller, dvs. "frac".

De viktige punktene du må huske på om søkeordet.

  • I motsetning til ref-nøkkelord, må ikke parameteren som bruker søkeordet initialiseres før metodeanrop.
  • Den kalte metoden vil selv tilordne en verdi til parameteren med et ut nøkkelord da det anses som ikke tilordnet i den kalte metoden, dvs. det antas å ikke ha noen initialverdi.
  • Den kalte metoden må tilordne en verdi til ut-parameteren før metoden avsluttes.
  • Ut-søkeordet er også aktuelt for referansevariabelen.
  1. Når en variabel som er gitt etter ref-nøkkelordet, sendes til en hvilken som helst metode, gjenspeiles endringene som er gjort i den i metoden i sin opprinnelige verdi. Når en variabel som sendes til en metode, blir gitt ut av et søkeord, returnerer metoden den uten å bruke retursøkkelord.
  2. Ref-parameteren bør initialiseres før den sendes til en metode. På den annen side må ut-parameteren initialiseres innenfor metoden den sendes til.
  3. Mens du ringer, deklarerer eller definerer en metode, blir ref-parameter eksplisitt erklært som ref. På den annen side, mens du ringer, erklærer eller definerer en metode, blir parameter uttrykkelig erklært som ute.

Konklusjon:

Hver gang variabelen skal sendes ved henvisning til en metode, kan søkeordet ref og ut brukes. Mens årsaken til å bruke begge nøkkelordene er forskjellig der ref-nøkkelordet kan brukes til å endre verdien på argumentet forut for ref-søkeord, ført til den kalt metoden og søkeordet ut brukes til å returnere verdien av argumentet som ble gitt foran med søkeordet ute.