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
Freigeben: 2025-01-19 09:47:09
Original
846 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage