Heim >Backend-Entwicklung >C++ >Warum gibt C# beim Ändern automatisch implementierter Eigenschaften den Fehler „Rückgabewert kann nicht geändert werden' aus?
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:
<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!