Zum Hauptinhalt springen
Veröffentlicht am

ref und out in C#

Teilen:

Einführung

In der Programmierung stoßen wir häufig auf Situationen, in denen eine Methode mehr als einen Wert zurückgeben oder die übergebenen Argumente direkt verändern soll. In C# sind ref und out zwei wesentliche Modifizierer, die diese Möglichkeit bieten. Jeder von ihnen hat jedoch seine eigenen Besonderheiten, die Beachtung verdienen.

Wertübergabe vs. Referenzübergabe

Bevor wir tiefer in ref und out eintauchen, ist es wichtig, den Unterschied zwischen Wertübergabe und Referenzübergabe zu verstehen.

  • Wertübergabe: Eine Kopie des Werts wird an die Methode übergeben. Änderungen an diesem Wert wirken sich nicht auf das Original aus.
  • Referenzübergabe: Eine Referenz auf die ursprüngliche Variable wird übergeben. Änderungen wirken sich direkt auf den ursprünglichen Wert aus.

ref verstehen

Der Modifizierer ref gibt an, dass ein Argument per Referenz und nicht per Wert übergeben wird.

Eigenschaften von ref:

  • Die Variable muss vor der Übergabe initialisiert sein.
  • Änderungen innerhalb der Methode spiegeln sich außerhalb wider.

out erkunden

Der Modifizierer out ähnelt ref darin, dass er Argumente per Referenz übergibt.

Eigenschaften von out:

  • Die Variable muss vor der Übergabe nicht initialisiert sein.
  • Die Variable muss innerhalb der Methode initialisiert werden, bevor die Methode zurückkehrt.
using System;

namespace Base {
  class RefUndOut {
    public void Run() {
      int zahl1 = 0, zahl2;

      Ref(ref zahl1);
      Out(out zahl2);

      Console.WriteLine($"Wert nach der Ref-Methode: {zahl1}");   // 2
      Console.WriteLine($"Wert nach der Out-Methode: {zahl2}");   // 3
    }

    void Ref(ref int num) {
      num = 2;
    }

    void Out(out int num) {
      num = 3;
    }
  }
}

Wann sollte man ref oder out verwenden?

Sowohl ref als auch out haben ihre Anwendungsgebiete:

  • Verwende ref, wenn du erwartest, dass das Argument bereits initialisiert wurde und die Methode diesen Wert verändern soll.
  • Verwende out, wenn die Methode für die Initialisierung oder Festlegung des Werts verantwortlich sein soll.

Fazit

Sowohl ref als auch out sind wertvolle Werkzeuge in C#, die eine größere Flexibilität bei der Datenverarbeitung zwischen Methoden bieten. Wenn du ihre Eigenschaften und Unterschiede verstehst, bist du besser gerüstet, diese Modifizierer in deinen Projekten effektiv einzusetzen.

Happy coding!