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?
Antworten
Zu viele Anzeigen?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.
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.
- See previous answers
- Weitere Antworten anzeigen