Differenza tra il parametro ref e out in c #

riferimento (riferimento) Parametro
Il parametro "ref" viene utilizzato per passare il valore per riferimento dal parametro effettivo al parametro formale i.e dal metodo callee al metodo chiamato. In C #, un parametro dichiarato con un modificatore "ref" è un parametro di riferimento. Quando si passano i parametri per riferimento, a differenza dei parametri di valore, per questo parametro non viene creata una nuova posizione. Qualsiasi modifica apportata al parametro formale si rifletterà nel parametro attuale.

Esempio di parametro ref

1234567 Incremento del vuoto (ref int m) m = m + 100; // il valore di n sarà cambiato ..... int n = 50; Increment (ref n);

Come mostrato nello snippet di programma sopra, le modifiche apportate a m si rifletteranno su n, poiché il parametro viene passato per riferimento.

out (Output) Parametro
Il parametro di output viene utilizzato per passare il risultato alla funzione di chiamata. La parola chiave 'out' viene utilizzata per dichiarare il parametro come parametro Output. Simile a un parametro di riferimento, un parametro di output non crea una nuova posizione di memoria. Invece, diventa un alias del parametro nel metodo di chiamata.

Esempio di out Parametro

12345678910111213 using System; class MyOutput static void Square (int p, out int q) q = p * p; public static void main () int x; Square (5, out x); Console.WriteLine ("Square of un numero è: "+ x);

Nel programma precedente, x è dichiarato come parametro out nella funzione di chiamata e, come puoi vedere, x non è stato inizializzato. Quando termina la funzione Square, il valore di q verrà copiato nel parametro di uscita x.

Differenza tra il parametro ref e out in C #

  1. Nel parametro di riferimento, le modifiche apportate al parametro formale si riflettono sul parametro effettivo, mentre nel parametro out, il valore viene riflesso al parametro out della funzione di chiamata.
  2. Il parametro effettivo "output" di solito non viene assegnato a un valore mentre a un parametro effettivo dichiarato come riferimento deve sempre essere assegnato un valore prima di chiamare.
    Nota: È necessario assegnare un valore al parametro out nel corpo del metodo; altrimenti il ​​metodo non verrà compilato.
  3. Sia i parametri out che ref non creano una nuova posizione di memoria.
  4. I parametri ref e out vengono trattati in modo diverso in fase di esecuzione, ma vengono trattati allo stesso modo in fase di compilazione.
IT