Heim >Backend-Entwicklung >C++ >Wie können Werttypen in C# vom Objekt (einem Referenztyp) erben und gleichzeitig das Wertkopierverhalten beibehalten?
Das Paradoxon verstehen:
In C# können Strukturen (Werttypen) von Klassen erben, was scheinbar im Widerspruch zu ihrem inhärenten Wertkopierverhalten steht. In diesem Artikel wird erläutert, wie diese Vererbung funktioniert, ohne die Werttypsemantik zu beeinträchtigen.
C# erlaubt Strukturen, von Klassen zu erben, und schreibt vor, dass alle Strukturen letztendlich von System.ValueType
abgeleitet sind, das wiederum von System.Object
erbt. Diese Vererbung gewährt Zugriff auf die Mitglieder der Basisklasse.
Die Common Language Runtime (CLR) unterscheidet anhand ihrer Speicherverwaltung zwischen Werttypen und Referenztypen. Werttypen werden nach Wert kopiert, während Referenztypen nach Referenz kopiert werden. Dieser grundlegende Unterschied bleibt unabhängig von der Vererbung bestehen.
Die Vererbung von einem Referenztyp hat keinen Einfluss auf die Kerneigenschaft eines Werttyps: das Kopieren von Werten. Instanzen von Werttypen werden immer nach Wert kopiert, unabhängig von ihrer Vererbungshierarchie.
Stellen Sie sich rote Kästchen (Werttypen) und blaue Kästchen (Referenztypen) vor. Es gibt drei spezielle blaue Kästchen: Object
, ValueType
und Enum
. Alle roten Kästchen befinden sich entweder innerhalb von ValueType
oder Enum
. Die Eingrenzung in blaue Kästchen ändert nichts an der Farbe der roten Kästchen; Ebenso ändert die Vererbung nicht das Kopierverhalten eines Werttyps.
Das obige ist der detaillierte Inhalt vonWie können Werttypen in C# vom Objekt (einem Referenztyp) erben und gleichzeitig das Wertkopierverhalten beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!