1. Werttypobjekte haben zwei Darstellungen: Unboxed und Boxed. Im Gegensatz dazu liegen Referenztypen immer in Boxform vor.
2. Werttypen werden von System .ValueType abgeleitet . Dieser Typ stellt dieselben Methoden wie System.Object bereit. Allerdings überschreibt System.ValueType die Equals-Methode und kann true zurückgeben, wenn die Feldwerte der beiden Objekte vollständig übereinstimmen. Darüber hinaus überschreibt System.ValueType die GetHashCode-Methode. Der von dieser überschriebenen Methode verwendete Algorithmus berücksichtigt beim Generieren des Hash-Codes die Werte in den Instanzfeldern des Objekts. Da diese Standardimplementierung Leistungsprobleme aufweist, sollten Sie beim Definieren Ihres eigenen Werttyps die Methoden Equals und GetHashCode überschreiben und deren explizite Implementierung bereitstellen
3, da der Werttyp nicht als verwendet werden kann ein Basistyp zum Definieren eines neuen Werttyps oder eines neuen Referenztyps, daher sollten keine neuen virtuellen Methoden in Werttypen eingeführt werden, alle Methoden können nicht abstrakt sein und alle Methoden sind implizit versiegelt (können nicht überschrieben werden)
4. Referenztypvariablen enthalten die Adresse des Objekts im Heap. Referenztypvariablen werden beim Erstellen mit Null initialisiert und der Tabellenname verweist derzeit nicht auf ein gültiges Objekt. Ansichten, die Null-Referenztypvariablen verwenden, lösen eine NUllReferenceException aus. Im Gegensatz dazu enthält eine Variable eines Werttyps immer einen Wert des zugrunde liegenden Typs und alle Mitglieder des Werttyps werden auf 0 initialisiert. Werttypvariablen sind keine Zeiger und der Zugriff auf einen Werttyp kann keine NullReferenceExcption-Ausnahme
5: Durch die Zuweisung einer Werttypvariablen zu einer anderen Werttypvariablen wird eine feldweise Zuweisung durchgeführt. Das Zuweisen einer Referenztypvariablen zu einer anderen Referenztypvariablen kopiert nur die Speicheradresse
6. Zwei oder mehr Referenzen können auf dasselbe Objekt im Heap verweisen, sodass für eine Variable die Operation ausgeführt wird kann sich auf ein anderes referenziertes Objekt auswirken. Im Gegensatz dazu sind Werttypvariablen eigenständig und Operationen, die an einer Werttypvariablen ausgeführt werden, können sich nicht auf eine andere Werttypvariable auswirken Die Methoden, die eine Instanz dieses Typs definieren, sind nicht mehr aktiv. Der ihnen zugewiesene Speicher wird freigegeben, anstatt auf die Garbage Collection zu warten
Das obige ist der detaillierte Inhalt vonZwei Darstellungen von Werttypobjekten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!