Heim >Backend-Entwicklung >C++ >Warum führt das Ändern einer automatisch implementierten C#-Eigenschaft zu dem Fehler „Der Rückgabewert kann nicht geändert werden'?
Automatisch implementierte C#-Eigenschaften bieten einen optimierten Ansatz für die Datenkapselung. Versuche, diese Eigenschaften direkt zu ändern, können jedoch zu dem frustrierenden Compilerfehler „Der Rückgabewert kann nicht geändert werden“ führen.
Dieser Fehler tritt auf, weil automatisch implementierte Eigenschaften beim Zugriff eine Kopie der zugrunde liegenden Daten zurückgeben. Folglich bleiben alle Änderungen an dieser Kopie nicht bestehen; Sie haben keinen Einfluss auf den ursprünglich gespeicherten Wert.
Beobachten Sie das folgende Beispiel:
<code class="language-csharp">public Point Origin { get; set; } Origin.X = 10; // Results in CS1612 error</code>
Der Fehler tritt auf, weil Point
ein Werttyp (Struktur) ist. Durch den Zugriff auf Origin
wird eine Kopie bereitgestellt, keine direkte Referenz. Durch Ändern der X
-Eigenschaft der Kopie bleibt das Original Origin
unverändert.
Die Lösung besteht darin, einen Referenztyp (Klasse) zu verwenden oder eine Zwischenvariable zu verwenden. Hier ist ein korrigierter Ansatz:
<code class="language-csharp">Origin = new Point(10, Origin.Y);</code>
Dieser Code erstellt ein neues Point
-Objekt mit der aktualisierten X
-Koordinate und weist es wieder der Origin
-Eigenschaft zu. Da Origin
ein Referenztyp ist, wird diese Änderung korrekt im Sicherungsspeicher widergespiegelt.
Das obige ist der detaillierte Inhalt vonWarum führt das Ändern einer automatisch implementierten C#-Eigenschaft zu dem Fehler „Der Rückgabewert kann nicht geändert werden'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!