Heim >Backend-Entwicklung >C++ >Was ist der Unterschied zwischen den C#-Schlüsselwörtern „ref' und „out' zum Ändern von Objekten?
c# ref
und out
Schlüsselwörter: eine klare Unterscheidung
In C#müssen die Methoden als Argumente verabschiedete Objekte ändern, und die Schlüsselwörter ref
und out
spielen entscheidende Rollen. Während beide Modifikationen ermöglichen, unterscheidet sich ihr Verhalten erheblich.
ref
Schlüsselwort: Änderung vorhandener Objekte
Das Schlüsselwort ref
bedeutet, dass die Methode direkt mit dem ursprünglichen Objekt als Argument übergeben wird, nicht als Kopie. Alle Änderungen innerhalb der Methode wirken sich direkt auf das ursprüngliche Objekt aus. Wichtig ist, dass das Objekt initialisiert werden muss, bevor er an die Methode übergeben wird.
out
Schlüsselwort: Erstellen und Rückgabe von Objekten
Umgekehrt zeigt das Schlüsselwort out
an, dass die Methode für die Initialisierung des Objekts verantwortlich ist. Die Methode weist dem Objekt einen Wert zu, und dieses neu initialisierte Objekt wird dann an den Anrufer zurückgegeben. out
Parameter werden deklariert, erfordern jedoch keine Initialisierung vor dem Methodenaufruf.
Auswählen des richtigen Schlüsselworts
Die Wahl zwischen ref
und out
hängt vom Zweck der Methode ab:
ref
, um ein vorhandenes -Objekt zu ändern. Die Methode erstellt kein neues Objekt. out
, um zu erstellen und ein neues Objekt zurückzugeben. Die Methode ist für die Initialisierung verantwortlich. veranschaulichende Beispiele:
<code class="language-csharp">public void ModifyWithRef(ref MyClass someClass) { someClass.Property1 = 10; } public void CreateWithOut(out MyClass someClass) { someClass = new MyClass { Property1 = 20 }; }</code>
ModifyWithRef
verändert ein vorhandenes someClass
mit ref
. CreateWithOut
erstellt und initialisiert someClass
mit out
. Beachten Sie den Unterschied zur Initialisierungsanforderung, wenn Sie diese Methoden aufrufen.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen den C#-Schlüsselwörtern „ref' und „out' zum Ändern von Objekten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!