Unterschied zwischen Ref und Out Parameter in C#

Unterschied zwischen Ref und Out Parameter in C#

Ref (Referenz) Parameter

Der Parameter „Ref“ wird verwendet, um den Wert durch Referenz vom tatsächlichen Parameter auf den formalen Parameter i zu übergeben.e von der Callee -Methode zur aufgerufenen Methode. In C#ist ein mit einem „Ref“ -Modifikator deklarierter Parameter ein Referenzparameter. Wenn Sie die Parameter durch Referenz übergeben, wird im Gegensatz zu Wertparametern ein neuer Ort für diesen Parameter nicht erstellt. Alle Änderungen am formalen Parameter werden im tatsächlichen Parameter widerspiegeln.

Beispiel für den REF -Parameter
Wie im obigen Programm -Snippet gezeigt, werden alle Änderungen an m mit n reflektiert, da der Parameter mit Referenz übergeben wird.

OUT (Ausgabe) Parameter

Der Ausgangsparameter wird verwendet, um das Ergebnis an die Aufruffunktion zurückzugeben. Das Schlüsselwort "Out" wird verwendet, um den Parameter als Ausgangsparameter zu deklarieren. Ähnlich wie bei einem Referenzparameter erstellt ein Ausgabeparameter keinen neuen Speicherort. Stattdessen wird es zu einem Alias ​​des Parameters in der Aufrufmethode.

Beispiel für einen Parameter
Im obigen Programm wird X als Out -Parameter in der Aufruffunktion deklariert, und wie Sie sehen können, wurde X nicht initialisiert. Wenn die Quadratfunktion endet, wird der Wert von Q in den Ausgangsparameter x kopiert.

Unterschied zwischen Ref und Out Parameter in C#

  1. Im Referenzparameter spiegeln Änderungen am formalen Parameter den tatsächlichen Parameter wider, während der Wert des Out -Parameters wieder auf den Out -Parameter der Aufruffunktion reflektiert wird.
  2. Der tatsächliche Parameter "Ausgabe" hat normalerweise keinen Wert zugewiesen, während ein tatsächlicher Parameter, der als Referenz deklariert wurde.
    Notiz: Sie müssen dem Out -Parameter in Method Body Wert zuweisen. Andernfalls wird die Methode nicht kompiliert.
  3. Sowohl OUT- als auch REF -Parameter erstellen keinen neuen Speicherort.
  4. Die Ref- und Out-Parameter werden zur Laufzeit unterschiedlich behandelt, aber sie werden zur Kompilierungszeit gleich behandelt.