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'?

Warum führt das Ändern einer automatisch implementierten C#-Eigenschaft zu dem Fehler „Der Rückgabewert kann nicht geändert werden'?

DDD
DDDOriginal
2025-01-19 09:27:12292Durchsuche

Why Does Modifying a C# Auto-Implemented Property Result in a

Behebung des Fehlers „Rückgabewert kann nicht geändert werden“ in automatisch implementierten C#-Eigenschaften

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!

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