Vererbungsbeziehung zwischen C#-Werttypen und Objekt
Frage: ValueType ist ein Werttyp und Object ist ein Referenztyp. Wie kann ein Werttyp von Object erben?
Antwort:
Im Gegensatz zur ursprünglichen Frage erlaubt C# Strukturen (Werttypen), von Klassen zu erben. Tatsächlich leiten sich alle Werttypen von System.ValueType ab, das wiederum von System.Object abgeleitet ist. Diese Vererbungsbeziehung ermöglicht es einer Struktur, Mitglieder von System.ValueType und im weiteren Sinne auch Mitglieder von System.Object zu erben.
Wie die CLR mit dieser Vererbung umgeht:
Trotz der Vererbung behandelt die CLR Werttypen immer noch anders als Referenztypen. Werttypen nach Wert kopieren , während Referenztypen nach Referenz kopieren . Die Vererbungsbeziehung zwischen Werttypen und Referenztypen hat keinen Einfluss darauf, wie Instanzen kopiert werden.
Analogieerklärung:
Stellen Sie sich eine Reihe von Kisten vor:
In dieser Analogie kann sich die rote Box (Werttyp) vollständig innerhalb der blauen Box (Referenztyp) befinden, genau wie eine Struktur (Werttyp) von einer Klasse (Referenztyp) erben kann. Die Tatsache, dass ein Werttyp von einem Referenztyp abgeleitet ist, negiert nicht seine grundlegende Natur als Werttyp.
Daher ist die Vererbungsbeziehung zwischen Werttypen und Objekt eine logische Beziehung und hat keinen Einfluss auf das zugrunde liegende Verhalten von Werttypen in Bezug auf Kopieren und Speicherbereinigung.
Das obige ist der detaillierte Inhalt vonWie können Werttypen in C# von Objekten erben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!