Was ist der Unterschied zwischen den Schlüsselwörtern ref und out in C#?
Hallo zusammen! Ich habe angefangen, C# zu lernen, und bin auf die Schlüsselwörter `ref` und `out` gestoßen. Ich verstehe, dass beide es ermöglichen, übergebene Variablen innerhalb einer Methode zu ändern, aber der Unterschied zwischen ihnen ist mir nicht ganz klar.
Hier ist ein Beispiel, das ich geschrieben habe:
```csharp
public void TestRef(ref int x)
{
x = x * 2;
}
public void TestOut(out int x)
{
x = 10;
}
static void Main()
{
int a = 5;
int b; // Fehler: nicht initialisierte Variable für out
TestRef(ref a);
Console.WriteLine(a); // Gibt 10 aus
TestOut(out b);
Console.WriteLine(b); // Gibt 10 aus
}
```
Mir ist aufgefallen, dass ich bei `out` keine nicht initialisierte Variable ohne Fehler übergeben kann, aber in der Methode initialisiere ich sie. Bei `ref` muss ich die Variable vor dem Aufruf initialisieren. Aber das ist nicht der einzige Unterschied, da bin ich mir sicher.
Gibt es vielleicht noch andere Feinheiten? Zum Beispiel, wie wirkt sich das auf die Leistung aus, oder gibt es Regeln, wann man was verwendet? Ich wäre für eine ausführliche Erklärung mit Beispielen dankbar.
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs
Algorithmen und Datenstrukturen in Swift: Ein vollständiger Leitfaden für iOS-Entwickler
Entwurfsmuster in C# mit Beispielen: von A bis Z
Generics in C#: warum sie wichtig sind und wie man sie in der Praxis einsetzt
HTML und CSS in PDF mit PHP: Komplette Anleitung mit Beispielen