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

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:

public Point Origin { get; set; }

Origin.X = 10; // 出现 CS1612 错误
Nach dem Login kopieren

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:

Point originCopy = Origin;
originCopy.X = 10;
Origin = originCopy;
Nach dem Login kopieren

Alternativ können Sie Ihr eigenes Backup-Feld erstellen, um den Werttyp zu speichern und das Feld direkt zu ändern:

private Point _origin;
public Point Origin
{
    get { return _origin; }
    set { _origin = value; }
}
Nach dem Login kopieren

Auf diese Weise können Sie das Origin-Attribut direkt ändern:

Origin.X = 10; // 此行现在可以正常工作,不会报错
Nach dem Login kopieren

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!

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