Avatar ·

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.