Recomandat, 2024

Alegerea Editorului

Diferența dintre ref și out în C #

"Ref" și "Out" sunt modificatorii parametrilor utilizați în C #. Folosind ref și out, puteți trece orice tip de valoare prin referința sa la orice metodă. Motivul transmiterii oricărui tip de valoare prin referință introduce diferența principală dintre cuvântul cheie refăcut și extras. Cuvântul ref permite metodei numite să modifice conținutul argumentului care îi este transmis cu ref keyword. Cuvântul cheie extern permite metodei numite să returneze mai mult de o singură valoare la un singur apel. Să studiem diferența dintre ref și out împreună cu o diagramă de comparație.

Diagramă de comparație

Bazele comparațieiRefafară
De bazăPermite modificarea valorii argumentului urmat de ref keyword.Aceasta permite o metodă de returnare a valorilor precedate de un cuvânt cheie.
InițializareaParametrul ref trebuie inițializat înainte de apelarea metodei.Parametrul Out trebuie inițializat în interiorul metodei numite înainte de a se termina.
DeclaraţieParametrul care trebuie modificat printr-o metodă este declarat ca ref, în timp ce metoda de declarare și metoda de apelare.Parametrul care trebuie returnat trebuie să fie declarat ca ref, în timp ce metoda de declarare și metoda de apelare.

Definiția cuvântului Ref

"Ref" este un modificator de parametri utilizat atunci când este nevoie de a apela o metodă cu call-by-reference. Când vrem ca modificările aduse argumentelor din interiorul unei metode chemate să reflecte în valoarea inițială a acelei variabile, atunci se folosește modificatorul de parametru ref. Tipul de valoare pe care dorim să-l declarăm ca ref, este precedat de cuvântul cheie "ref" în timpul declarației metodei și a apelarea metodei. Mai mult de un parametru poate fi declarat ca un "ref" în timpul apelării și declarării unei metode.

 utilizând Sistemul; clasa DemoRef {public void Square (ref int s) {s = s * s; }} clasa Ref_main {static void Principal () {DemoRef ob = nou DemoRef (); int a = 10; Console.WriteLine ("un apel înainte de metoda:" + a); obSquare (ref); // Ref. Folosit Console.WriteLine ("un apel după apel:" + a); }} // ieșiți înainte de a apela metoda: 10 a după apelul metodei: 100 

În codul de mai sus, variabila "a" este trecută ca argument pentru metoda Square (ref) împreună cu modificatorul parametrului ref atașat la acesta. Aceasta înseamnă orice schimbări pe care Metoda Pătrat (ref) va efectua pe variabila "a" din interiorul acesteia va reflecta în valoarea inițială a "a", în afara metodei.

Există câteva puncte importante care trebuie reamintite atunci când se face referire la modificatorul de parametri "ref".

  • Argumentul pe care îl treceți prin ref, la o metodă trebuie inițializat înainte de apelarea metodei.
  • Metoda nu trebuie să atribuie valoarea inițială argumentului ref.
  • Puteți utiliza, de asemenea, ref împreună cu variabila de referință, de asemenea.

Definirea cuvântului cheie externă

De fiecare dată când apelați o metodă, va reveni doar o singură valoare. Dacă doriți ca o metodă să returneze mai mult de o valoare la un apel, cuvântul cheie "out" trebuie utilizat împreună cu parametrii pe care doriți să îi reveniți atunci când metoda este terminată. Uneori este cazul ca atunci când nu vrem să trecem nimic la metodă, dar vrem ca metoda să revină la ceva ce folosim parametrii cu un cuvânt cheie în afară. Să înțelegem cu un exemplu.

 utilizând Sistemul; class DemoOut {public int Descompune (double x, out double fraction) {int entire_num; whole_num = (int) x; fracție = x - număr întreg; retur toate_num; }} clasa Out_maint {static void Principal () {DemoOut ob = nou DemoOut (); int i; dublu frac; i = ob.Decompose (100.125, out frac); // folosit cuvântul cheie Console.WriteLine ("Partea întregului număr este" + i); Console.WriteLine ("fracțiunea este" + frac); }} // ieșire porțiunea Integer este 100 partea fractională este 0.125 

În codul de mai sus, două valori sunt returnate prin metoda, Decompose (). Unul se returnează prin cuvântul cheie "întoarcere", adică întreg_num, iar altul returnează un parametru care este precedat de cuvântul cheie în afară de metoda de apelare, adică "frac".

Punctele importante pe care trebuie să le rețineți în legătură cu cuvântul cheie extins.

  • Spre deosebire de cuvântul cheie ref, parametrul care utilizează cuvântul cheie nu trebuie inițializat înainte de a apela metoda.
  • Metoda numită va atribui ea însăși o valoare parametrului cu un cuvânt cheie în afară deoarece este considerat ca neasignat în cadrul metodei numite, adică se presupune că nu are valoare inițială.
  • Metoda apelată trebuie să atribuie o valoare parametrului out înainte ca metoda să se termine.
  • Cuvântul cheie din afară este de asemenea aplicabil variabilei de referință.

Diferentele cheie intre Ref si Out in C #

  1. Atunci când o variabilă precedată de cuvântul cheie ref este trecută la orice metodă, atunci modificările aduse acesteia în cadrul metodei reflectă valoarea inițială. Atunci când o variabilă transmisă unei metode este precedată de un cuvânt cheie, metoda o returnează fără a utiliza cuvântul cheie returnat.
  2. Parametrul ref trebuie inițializat înainte de a fi trecut la o metodă. Pe de altă parte, parametrul out trebuie inițializat în interiorul metodei la care este trecut.
  3. În timpul apelării, declarării sau definirii unei metode, parametrul ref este declarat explicit ca ref. Pe de altă parte, în timp ce apelați, declarați sau definiți o metodă, parametrul out este explicit declarat ca ieșit.

Concluzie:

Ori de câte ori trebuie transmisă variabila prin trimiterea la o metodă, poate fi folosit cuvântul cheie ref. Întrucât motivul folosirii ambelor cuvinte cheie este diferit în cazul în care cuvântul cheie ref poate fi folosit pentru a modifica valoarea argumentului precedat de cuvântul cheie ref, transmis metodei chemate, iar cuvântul cheie extern este folosit pentru a returna valoarea argumentului precedat de către cuvântul cheie afară.

Top