Heim >Backend-Entwicklung >C++ >Warum gibt C# beim Ändern automatisch implementierter Eigenschaften den Fehler „Rückgabewert kann nicht geändert werden' aus?

Warum gibt C# beim Ändern automatisch implementierter Eigenschaften den Fehler „Rückgabewert kann nicht geändert werden' aus?

Susan Sarandon
Susan SarandonOriginal
2025-01-19 09:47:09847Durchsuche

Why Does C# Throw a

Detaillierte Erklärung des Fehlers „Rückgabewert kann nicht geändert werden“ in C#

Automatisch implementierte Eigenschaften in C# bieten eine bequeme Möglichkeit, Eigenschaften zu definieren. Beim Versuch, den Eigenschaftswert zu ändern, kann es jedoch manchmal zu der Fehlermeldung „Rückgabewert kann nicht geändert werden“ kommen.

Bitte beachten Sie den folgenden Code:

<code class="language-csharp">public Point Origin { get; set; }

Origin.X = 10; // 产生 CS1612 错误</code>

Dieser Code versucht, die X-Koordinate der Origin-Eigenschaft festzulegen. Es wird jedoch ein Fehler gemeldet, der besagt, dass der Rückgabewert der Eigenschaft nicht geändert werden kann, da es sich nicht um eine Variable handelt.

Grundursache: Werttypen und Referenztypen

Dieser Fehler tritt auf, weil Point ein Werttyp (eine Struktur) ist. Werttypen werden nach Wert kopiert. Das heißt, wenn Sie einer Variablen einen Werttyp zuweisen, wird eine neue Kopie erstellt. Wenn Sie in diesem Fall auf die Origin-Eigenschaft zugreifen, greifen Sie tatsächlich auf eine Kopie des Point-Werts zu, nicht auf den ursprünglichen, in der Klasse gespeicherten Wert.

Lösung

Um dieses Problem zu beheben, haben Sie zwei Möglichkeiten:

  1. Referenztypen verwenden: Ändern Sie Point in einen Referenztyp (Klasse) anstelle eines Werttyps. Referenztypen werden per Referenz kopiert. Das heißt, wenn Sie einer Variablen einen Referenztyp zuweisen, wird der Zeiger auf das Originalobjekt kopiert. Dadurch kann das Originalobjekt direkt über seine Eigenschaften verändert werden.
  2. In einer temporären Variablen gespeichert: Wenn Sie Point als Werttyp beibehalten möchten, müssen Sie das Ergebnis des Eigenschaftszugriffs in einer temporären Variablen speichern, bevor Sie es ändern. Zum Beispiel:
<code class="language-csharp">Point temp = Origin;
temp.X = 10;
Origin = temp;</code>

Durch das Speichern des Eigenschaftswerts in der temporären Variablen erstellen Sie eine veränderbare Kopie des Werttyps. Anschließend können Sie Eigenschaften für die geänderte Kopie festlegen.

Das obige ist der detaillierte Inhalt vonWarum gibt C# beim Ändern automatisch implementierter Eigenschaften den Fehler „Rückgabewert kann nicht geändert werden' aus?. 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