Heim >Backend-Entwicklung >C++ >Warum tritt bei automatisch implementierten Eigenschaften in C# die Meldung „Rückgabewert kann nicht geändert werden' auf?
Fehler „Rückgabewert kann nicht geändert werden“ in C#
Bei der Verwendung automatisch implementierter Eigenschaften kann der Fehler „Rückgabewert kann nicht geändert werden“ auftreten, zum Beispiel:
<code class="language-csharp">public Point Origin { get; set; } Origin.X = 10; // 出现 CS1612 错误</code>
Fehlerursachenanalyse
Dieser Fehler tritt auf, weil Point
ein Werttyp (eine Struktur) ist. Beim Zugriff auf das Attribut Origin
wird eine Kopie des in der Klasse enthaltenen Werts zurückgegeben, nicht der Wert selbst. Das Ändern der Eigenschaften einer Kopie hat keinen Einfluss auf den Originalwert.
Lösung
Um dieses Problem zu lösen, muss der zugrunde liegende Wert direkt geändert werden. Bei Werttypen kann dies erreicht werden, indem eine Kopie in einer temporären Variablen gespeichert und eine Eigenschaft für diese Variable festgelegt wird:
<code class="language-csharp">Point originCopy = Origin; originCopy.X = 10; Origin = originCopy;</code>
Alternativ können Sie Ihr eigenes Backup-Feld erstellen, um den Werttyp zu speichern und das Feld direkt zu ändern:
<code class="language-csharp">private Point _origin; public Point Origin { get { return _origin; } set { _origin = value; } }</code>
Auf diese Weise können Sie das Origin
-Attribut direkt ändern:
<code class="language-csharp">Origin.X = 10; // 此行现在可以正常工作,不会报错</code>
Das obige ist der detaillierte Inhalt vonWarum tritt bei automatisch implementierten Eigenschaften in C# die Meldung „Rückgabewert kann nicht geändert werden' auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!