Diferența dintre parametrul ref și out în c #

ref (referință) Parametru
Parametrul "ref" este folosit pentru a transmite valoarea prin referință din parametrul actual la parametrul formal, de exemplu, de la metoda apelantă la metoda apelată. În C #, un parametru declarat cu un modificator "ref" este un parametru de referință. Când treceți parametrii prin referință, spre deosebire de parametrii de valoare, nu se creează o nouă locație pentru acest parametru. Orice modificări aduse parametrului formal vor reflecta parametrul actual.

Exemplu de parametru ref

1234567 void Increment (ref intm) m = m + 100; // valoarea n va fi modificată ..... int n = 50; Increment (ref n);

Așa cum se arată în fragmentul de program de mai sus, orice modificări aduse m vor fi reflectate în n, deoarece parametrul este trecut prin referință.

out (Output) Parametru
Parametrul de ieșire este utilizat pentru a transmite rezultatul înapoi la funcția de apelare. "out" este folosit pentru a declara parametrul drept parametru de ieșire. Similar unui parametru de referință, un parametru de ieșire nu creează o nouă locație de stocare. În schimb, devine un alias parametrului din metoda de apelare.

Exemplu de ieșire din parametru

12345678910111213 folosind funcția System, clasa MyOutput static void Square (int p, out int q) q = p * p; static public void principal () int x; un număr este: "+ x);

În programul de mai sus, x este declarat ca un parametru extern în funcția de apel și după cum puteți vedea, x nu a fost inițializată. Când funcția Square se termină, valoarea q va fi copiată la parametrul de ieșire x.

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

  1. În parametrul de referință, modificările aduse parametrului formal reflectă parametrul actual, în timp ce în parametrul out, valoarea se reflectă înapoi în parametrul out al funcției de apel.
  2. Parametrul actual "ieșire" nu este atribuit, în general, o valoare în timp ce un parametru actual declarat ca referință ar trebui să primească întotdeauna o valoare înainte de a apela.
    Notă: Trebuie să atribuiți valoarea parametrului out din corpul metodei; altfel metoda nu va fi compilată.
  3. Atât parametrii out și ref, nu creează o nouă locație de memorie.
  4. Parametrii de refare și ieșire sunt tratați în mod diferit la timpul de execuție, dar aceștia sunt tratați la fel în timpul de compilare.