Heim >Backend-Entwicklung >C++ >Warum tritt bei automatisch implementierten Eigenschaften in C# die Meldung „Rückgabewert kann nicht geändert werden' auf?

Warum tritt bei automatisch implementierten Eigenschaften in C# die Meldung „Rückgabewert kann nicht geändert werden' auf?

Susan Sarandon
Susan SarandonOriginal
2025-01-19 09:42:09960Durchsuche

Why Does

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!

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