Empfohlen, 2024

Tipp Der Redaktion

Unterschied zwischen ref und out in C #

"Ref" und "Out" sind die in C # verwendeten Parametermodifizierer. Mit ref und out können Sie jeden Wertetyp anhand seiner Referenz an jede Methode übergeben. Der Grund, einen Werttyp durch seine Referenz zu übergeben, führt zu dem Hauptunterschied zwischen dem Schlüsselwort ref und out. Mit dem ref- Schlüsselwort kann die aufgerufene Methode den Inhalt des mit ref-Schlüsselwort übergebenen Arguments ändern. Das out- Schlüsselwort ermöglicht es der aufgerufenen Methode, bei einem einzelnen Aufruf mehr als einen Wert zurückzugeben. Untersuchen wir den Unterschied zwischen ref und out und einer Vergleichstabelle.

Vergleichstabelle

VergleichsgrundlageRefaus
BasicEs erlaubt die Änderung des Argumentwerts, der mit dem Schlüsselwort ref fortgeführt wird.Damit kann eine Methode diese Werte zurückgeben, denen ein out-Schlüsselwort vorangestellt ist.
InitialisierungDer ref-Parameter muss vor dem Methodenaufruf initialisiert werden.Der Parameter out muss vor der Beendigung innerhalb der aufgerufenen Methode initialisiert werden.
ErklärungDer von einer Methode zu ändernde Parameter wird während der Methodendeklaration und des Methodenaufrufs als ref deklariert.Der zurückzugebende Parameter muss während der Methodendeklaration und des Methodenaufrufs als ref deklariert werden.

Definition des Schlüsselworts Ref

Das "ref" ist ein Parametermodifikator, der verwendet wird, wenn eine Methode mit Aufruf-durch-Referenz aufgerufen werden muss. Wenn wir möchten, dass die an den Argumenten innerhalb einer aufgerufenen Methode vorgenommenen Änderungen im ursprünglichen Wert dieser Variablen wiedergegeben werden, wird der Parameterreferenzparameter ref verwendet. Dem Wertetyp, den wir als ref deklarieren möchten, wird bei der Methodendeklaration und dem Methodenaufruf das Schlüsselwort "ref" vorangestellt. Beim Aufrufen und Deklarieren einer Methode können mehrere Parameter als „ref“ deklariert werden.

 mit System; Klasse 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 ("ein vorher Methodenaufruf:" + a); ob.Square (ref a); // Verwendetes ref Keyword Console.WriteLine ("a after call:" + a); }} // Ausgabe eines before-Methodenaufrufs: 10 a after-Methodenaufruf: 100 

Im obigen Code wird die Variable 'a' zusammen mit dem daran angefügten Parameter modifier ref als Argument an die Methode Square (ref a) übergeben. Dies bedeutet, dass alle Änderungen, die die Methode Square (ref a) für die Variable 'a' ausführt, im ursprünglichen Wert von 'a' und auch außerhalb der Methode wiedergegeben werden.

Es gibt einige wichtige Punkte, die beim Umgang mit dem Parametermodifikator "ref" zu beachten sind.

  • Das Argument, das Sie mit dem 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

Bei jedem Aufruf einer Methode wird nur ein einzelner Wert zurückgegeben. Wenn Sie möchten, dass eine Methode bei einem Aufruf mehr als einen Wert zurückgibt, muss das Schlüsselwort „out“ zusammen mit den Parametern verwendet werden, die Sie zurückgeben möchten, wenn die Methode beendet wird. Manchmal ist es der Fall, dass wir, wenn wir nichts an die Methode übergeben möchten, die Methode jedoch etwas zurückgeben möchten, Parameter mit einem out-Schlüsselwort verwenden. Verstehen wir es mit einem Beispiel.

 mit System; class DemoOut {public int Decompose (doppeltes x, aus doppelter Fraktion) {int whole_num; ganze_Zahl = (int) x; Bruch = x - ganze_Zahl; return ganze_num; }} class Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; Doppel-Frack; i = ob.Decompose (100.125, out frac); // verwendetes Schlüsselwort Console.WriteLine ("Ganzzahlteil ist" + i); Console.WriteLine ("fract part is is" + frac); }} // Ausgabe Integer-Anteil ist 100 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, dh whole_num, zum anderen gibt es einen Parameter zurück, dem das out-Schlüsselwort vorangestellt ist, während der Methodenaufruf "frac" ist.

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

  • Im Gegensatz zum ref-Schlüsselwort darf der Parameter, der das Schlüsselwort out verwendet, vor dem Methodenaufruf nicht initialisiert werden.
  • Die aufgerufene Methode weist dem Parameter selbst einen Wert mit einem out-Schlüsselwort zu, da es innerhalb der aufgerufenen Methode als nicht zugewiesen gilt, dh es wird angenommen, dass es 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.

Hauptunterschiede zwischen Ref und Out in C #

  1. Wenn eine Variable, vor der das Schlüsselwort ref steht, an eine Methode übergeben wird, werden die Änderungen an der Methode in ihrem ursprünglichen Wert übernommen. Wenn einer an eine Methode übergebenen Variablen ein out-Schlüsselwort vorangestellt wird, gibt die Methode diese 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 Parameter out in der Methode initialisiert werden, an die er übergeben wird.
  3. Beim Aufrufen, Deklarieren oder Definieren einer Methode wird der ref-Parameter explizit als ref deklariert. Beim Aufrufen, Deklarieren oder Definieren einer Methode wird der Parameter out jedoch explizit als out deklariert.

Fazit:

Immer wenn die Variable durch den Verweis an eine Methode übergeben werden soll, kann das Schlüsselwort ref und out verwendet werden. Der Grund für die Verwendung beider Schlüsselwörter ist jedoch unterschiedlich, wenn das Schlüsselwort ref verwendet werden kann, um den Wert des Arguments, dem das Schlüsselwort ref vorangestellt ist, zu ändern, das an die aufgerufene Methode übergeben wird, und das Schlüsselwort out verwendet wird, um den Wert des vorangegangenen Arguments zurückzugeben durch das Schlüsselwort out.

Top