Preporučeno, 2024

Izbor Urednika

Razlika između ref i out u C #

"Ref" i "Out" su modifikatori parametara koji se koriste u C #. Koristeći ref i out, možete proslijediti bilo koji tip vrijednosti prema njegovoj referenci na bilo koju metodu. Razlog prosljeđivanja bilo koje vrste vrijednosti njegovom referencom predstavlja glavnu razliku između ključne riječi ref i out. Ključna riječ ref dopušta pozvanoj metodi da promijeni sadržaj argumenta koji joj je proslijeđen pomoću ključne riječi ref. Ključna riječ out omogućuje pozvanoj metodi vraćanje više od jedne vrijednosti pri jednom pozivu. Proučimo razliku između ref i out uz usporednu tablicu.

Tablica usporedbe

Osnova za usporedbuRefvan
Osnovni, temeljniOmogućuje izmjenu vrijednosti argumenta nastavljenu s ključnom riječi ref.Omogućuje metodi da vrati one vrijednosti kojima prethodi ključna riječ out.
InicijalizacijaParametar ref mora biti inicijaliziran prije poziva metode.Out parametar mora biti inicijaliziran unutar pozvane metode prije nego što se završi.
DeklaracijaParametar koji se mora izmijeniti metodom je deklariran kao ref dok se deklaracija metode i metoda poziva.Parametar koji se vraća mora biti deklariran kao ref dok se deklaracija metode i metoda poziva.

Definicija ključne riječi

"Ref" je modifikator parametra koji se koristi kada je potrebno pozvati metodu s pozivom po referenci. Kada želimo da se promjene napravljene u argumentima unutar pozvane metode moraju odražavati u izvornoj vrijednosti te varijable, tada se koristi modifikator parametra ref. Tipu vrijednosti koji želimo deklarirati kao ref prethodi ključna riječ "ref" tijekom deklaracije metode i poziv metode. Više od jednog parametra može se deklarirati kao "ref" dok pozivate i deklarirate metodu.

 pomoću sustava; klasa DemoRef {javni void Square (ref int s) {s = s * s; }} klasa Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("prije poziva metode:" + a); kvadrata (ref a); // Koristi se ključna riječ Console.WriteLine ("nakon poziva:" + a); }} // izlaz prije poziva metode: 10 a nakon poziva metode: 100 

U gornjem kodu, varijabla 'a' se prosljeđuje kao argument na metodu Square (ref a) zajedno s modifikatorom parametra ref koji je pridodan njemu. To znači, bez obzira na promjene, metoda Square (ref a) će se izvršiti na varijabli 'a' u njoj će se odraziti u izvornoj vrijednosti 'a', također izvan metode.

Postoje neke važne točke koje se moraju zapamtiti kada se radi o modifikatoru parametara "ref".

  • Argument koji prosljeđujete ref na metodu mora se inicijalizirati prije pozivanja metode.
  • Metoda ne smije dodijeliti početnu vrijednost argumentu ref.
  • Također možete koristiti ref zajedno s referentnom varijablom.

Definicija ključne riječi Out

Svaki put kada pozovete metodu, vratit će se samo jedna vrijednost. Ako želite da se metodom na poziv vraća više od jedne vrijednosti, ključna riječ "out" mora se koristiti zajedno s parametrima koje želite vratiti natrag kada je metoda prekinuta. Ponekad je slučaj da kada ne želimo ništa proslijediti metodi, ali želimo da metoda vrati nešto, mi koristimo parametre s ključnom riječi out. Razumimo to s primjerom.

 pomoću sustava; klasa DemoOut {public int Decompose (dvostruki x, out dvostruki dio) {int whole_num; cijelo_num = (int) x; frakcija = x - cjelina; return whole_num; }} klasa Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; dvostruki frac; i = ob.Decompose (100.125, out frac); // iskorištena ključna riječ Console.WriteLine ("dio cijelog broja je" + i); Console.WriteLine ("dio frakcije je" + frac); }} // Izlaz Integer dio je 100 Frakcijski dio je 0.125 

U gornjem kodu se vraćaju dvije vrijednosti pomoću metode Decompose (). Ona se vraća ključnom riječi "return", tj. Whole_num, a druga vraća parametar kojem prethodi out ključna riječ, dok metoda zove tj. "Frac".

Važne napomene o ključnoj riječi out.

  • Za razliku od ključne riječi ref, parametar koji koristi ključnu riječ out ne smije se inicijalizirati prije pozivanja metode.
  • Pozvana metoda sama će dodijeliti vrijednost parametru s ključnom riječju out jer se smatra neraspoređenom unutar nazvane metode, tj. Pretpostavlja se da nema početnu vrijednost.
  • Pozvana metoda mora dodijeliti vrijednost izlaznom parametru prije završetka metode.
  • Ključna riječ out je također primjenjiva na referentnu varijablu.

Ključne razlike između Ref i Out u C #

  1. Kada se varijabla kojoj prethodi ključna riječ ref prosljeđuje na bilo koju metodu, promjene koje su napravljene u njoj odražavaju se u njezinoj izvornoj vrijednosti. Kada varijabli proslijeđenoj metodi prethodi ključna riječ out, metoda je vraća bez upotrebe ključne riječi povratka.
  2. Parametar ref treba inicijalizirati prije nego se proslijedi metodi. S druge strane, out parametar mora biti inicijaliziran unutar metode kojoj je proslijeđen.
  3. Dok pozivate, deklarirate ili definirate metodu, parametar ref eksplicitno je deklariran kao ref. S druge strane, prilikom pozivanja, deklariranja ili definiranja metode, parametar out je eksplicitno deklariran kao out.

Zaključak:

Kad god se varijabla prosljeđuje referencom na metodu, može se koristiti ref i out ključna riječ. Budući da se razlog za korištenje obje ključne riječi razlikuje kada se ključna riječ ref može koristiti za promjenu vrijednosti argumenta koji prethodi ključnoj riječi ref, proslijeđenoj pozvanoj metodi, a ključna riječ out se koristi za povratak prethodne vrijednosti argumenta prema ključnoj riječi out.

Top