Unterschied zwischen ref und out in C #

Autor: Laura McKinney
Erstelldatum: 2 April 2021
Aktualisierungsdatum: 5 Kann 2024
Anonim
Vlog #127 Gärreste ins Getreide schlitzen. Noch 100ha!
Video: Vlog #127 Gärreste ins Getreide schlitzen. Noch 100ha!

Inhalt


"Ref" und "Out" sind die in C # verwendeten Parameter-Modifikatoren. Mit ref und out können Sie jeden Werttyp als Referenz auf jede Methode übergeben. Der Grund für die Übergabe eines Wertetyps als Referenz führt den Hauptunterschied zwischen dem Schlüsselwort ref und out ein. Das ref Mit keyword kann die aufgerufene Methode den Inhalt des Arguments ändern, das mit dem Schlüsselwort ref übergeben wird. Das aus Das Schlüsselwort ermöglicht es der aufgerufenen Methode, mehr als einen Wert bei einem einzigen Aufruf zurückzugeben. Lassen Sie uns den Unterschied zwischen ref und out zusammen mit einer Vergleichstabelle untersuchen.

  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Fazit

Vergleichstabelle

Grundlage für den VergleichRefaus
BasicEs ermöglicht die Änderung des Werts des Arguments mit dem Schlüsselwort ref.Hiermit kann eine Methode die Werte zurückgeben, denen ein out-Schlüsselwort vorangestellt ist.
InitialisierungDer ref-Parameter muss vor dem Methodenaufruf initialisiert werden.Der out-Parameter muss innerhalb der aufgerufenen Methode initialisiert werden, bevor er beendet wird.
ErklärungDer von einer Methode zu ändernde Parameter wird bei der Methodendeklaration und beim Methodenaufruf als ref deklariert.Der zurückzugebende Parameter muss während der Methodendeklaration und des Methodenaufrufs als ref deklariert werden.


Definition von Ref Keyword

Das "ref" ist ein Parameter-Modifikator, der verwendet wird, wenn eine Methode mit Call-by-Reference aufgerufen werden muss. Wenn die an den Argumenten in einer aufgerufenen Methode vorgenommenen Änderungen im ursprünglichen Wert dieser Variablen widergespiegelt werden sollen, wird der Modifikator ref verwendet. Vor dem Werttyp, den wir als ref deklarieren möchten, steht das Schlüsselwort "ref" bei der Methodendeklaration und beim Methodenaufruf. Beim Aufrufen und Deklarieren einer Methode können mehrere Parameter als "ref" deklariert werden.

using System; class DemoRef {public void Square (ref int s) {s = s * s; }} class Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("a before method call:" + a); ob.Square (ref a); // Verwendete ref Schlüsselwort Console.WriteLine ("a after call:" + a); }} // einen Before-Methodenaufruf ausgeben: 10 einen After-Methodenaufruf: 100

Im obigen Code wird die Variable 'a' als Argument an die Methode Square (ref a) übergeben, zusammen mit dem daran angehängten Parameter-Modifikator ref. Dies bedeutet, dass alle Änderungen, die die Methode Square (ref a) an der Variablen ‘a’ vornimmt, auch außerhalb der Methode den ursprünglichen Wert des ’a’ widerspiegeln.


Es gibt einige wichtige Punkte, die beim Umgang mit dem Parametermodifikator „ref“ beachtet werden müssen.

  • Das Argument, das Sie als ref an eine Methode übergeben, muss vor dem Methodenaufruf initialisiert werden.
  • Die Methode darf dem ref-Argument keinen Anfangswert zuweisen.
  • Sie können auch ref zusammen mit der Referenzvariablen verwenden.

Definition von Out Keyword

Jedes Mal, wenn Sie eine Methode aufrufen, wird nur ein einziger Wert zurückgegeben. Wenn eine Methode bei einem Aufruf mehr als einen Wert zurückgeben soll, muss das Schlüsselwort "out" zusammen mit den Parametern verwendet werden, die bei Beendigung der Methode zurückgegeben werden sollen. Manchmal ist es der Fall, dass wir Parameter mit einem out-Schlüsselwort verwenden, wenn wir nichts an die Methode übergeben möchten, sondern die Methode etwas zurückgeben soll.Lassen Sie es uns anhand eines Beispiels verstehen.

using System; class DemoOut {public int Decompose (double x, out double fraction) {int whole_num; ganzzahl = (int) x; Bruch = x - ganze_Zahl; return whole_num; }} class Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; doppeltes frac; i = ob.Decompose (100,125, out frac); // verwendetes Schlüsselwort Console.WriteLine ("Ganzzahliger Teil ist" + i); Console.WriteLine ("Bruchteil ist" + frac); }} // Ausgabe ganzzahliger Anteil ist 100 Der Bruchteil ist 0,125

Im obigen Code werden zwei Werte von der Methode Decompose () zurückgegeben. Zum einen gibt es das Schlüsselwort "return" zurück, d. H. Whole_num, und zum anderen einen Parameter, dem das Schlüsselwort out vorangestellt ist, während die Methode d. H. "Frac" aufruft.

Die wichtigen Punkte, die Sie beim out-Keyword beachten sollten.

  • Im Gegensatz zum Schlüsselwort ref darf der Parameter, der das Schlüsselwort out verwendet, nicht vor dem Methodenaufruf initialisiert werden.
  • Die aufgerufene Methode weist dem Parameter selbst einen Wert mit einem Schlüsselwort out zu, da er innerhalb der aufgerufenen Methode als nicht zugewiesen gilt, d. H. Es wird angenommen, dass er keinen Anfangswert hat.
  • Die aufgerufene Methode muss dem out-Parameter einen Wert zuweisen, bevor die Methode beendet wird.
  • Das Schlüsselwort out gilt auch für die Referenzvariable.
  1. Wenn eine Variable, der das Schlüsselwort ref vorangestellt ist, an eine Methode übergeben wird, werden die in der Methode vorgenommenen Änderungen in ihrem ursprünglichen Wert wiedergegeben. Wenn einer an eine Methode übergebenen Variable das Schlüsselwort out vorangestellt wird, gibt die Methode das Schlüsselwort zurück, ohne das Schlüsselwort return zu verwenden.
  2. Der ref-Parameter sollte initialisiert werden, bevor er an eine Methode übergeben wird. Andererseits muss der out-Parameter innerhalb der Methode initialisiert werden, an die er übergeben wird.
  3. Beim Aufrufen, Deklarieren oder Definieren einer Methode wird der Parameter ref explizit als ref deklariert. Beim Aufrufen, Deklarieren oder Definieren einer Methode wird der Parameter out explizit als out deklariert.

Fazit:

Wann immer die Variable durch den Verweis auf eine Methode übergeben werden soll, kann das Schlüsselwort ref und out verwendet werden. Während die Gründe für die Verwendung beider Schlüsselwörter unterschiedlich sind, kann das Schlüsselwort ref verwendet werden, um den Wert des Arguments zu ändern, dem das Schlüsselwort ref vorangestellt ist, das an die aufgerufene Methode übergeben wird, und das Schlüsselwort out wird verwendet, um den Wert des vorangestellten Arguments zurückzugeben nach dem Schlüsselwort out.