412 Stimmen

Unterschied zwischen ref- und out-Parametern in .NET

Was ist der Unterschied zwischen ref y out Parameter in .NET? In welchen Situationen kann der eine nützlicher sein als der andere? Was wäre ein Code-Schnipsel, bei dem einer verwendet werden kann und ein anderer nicht?

0voto

jpaugh Punkte 6077

Sie sind subtil unterschiedlich.

Eine out Parameter muss vom Aufrufer nicht initialisiert werden, bevor er an die Methode übergeben wird. Daher kann jede Methode mit einem out Parameter

  • Der Parameter kann nicht gelesen werden, bevor ihm ein Wert zugewiesen wird
  • Muss ihm einen Wert zuweisen, bevor er zurückkehrt

Dies wird für eine Methode verwendet, die ihr Argument unabhängig von seinem vorherigen Wert überschreiben muss.


A ref Parameter muss vom Aufrufer initialisiert werden, bevor er an die Methode übergeben wird. Daher kann jede Methode mit einem ref Parameter

  • Kann den Wert vor der Zuweisung prüfen
  • Kann den ursprünglichen Wert zurückgeben, unverändert

Dies wird für eine Methode verwendet, die (z. B.) ihren Wert überprüfen und validieren oder normalisieren muss.

0voto

Marc Ziss Punkte 608

Out hat in C#7 eine neue, prägnantere Syntax erhalten https://docs.microsoft.com/en-us/dotnet/articles/csharp/whats-new/csharp-7#more-expression-bodied-members und noch spannender ist die C#7 Tupel-Erweiterungen, die eine elegantere Wahl als mit ref und out IMHO sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X