Heim >Backend-Entwicklung >C++ >Was ist der Unterschied zwischen den C#-Schlüsselwörtern „ref' und „out' zum Ändern von Objekten?

Was ist der Unterschied zwischen den C#-Schlüsselwörtern „ref' und „out' zum Ändern von Objekten?

Susan Sarandon
Susan SarandonOriginal
2025-01-24 12:01:09422Durchsuche

What's the Difference Between C#'s `ref` and `out` Keywords for Modifying Objects?

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:

  • Verwenden Sie ref, um ein vorhandenes -Objekt zu ändern. Die Methode erstellt kein neues Objekt.
  • Verwenden Sie 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn