Freigeben über


OpCodes.Unbox Feld

Definition

Konvertiert die Darstellung eines mittels Boxing gepackten Werttyps in seine mittels Unboxing entpackte Entsprechung.

public: static initonly System::Reflection::Emit::OpCode Unbox;
public static readonly System.Reflection.Emit.OpCode Unbox;
 staticval mutable Unbox : System.Reflection.Emit.OpCode
Public Shared ReadOnly Unbox As OpCode 

Feldwert

Hinweise

In der folgenden Tabelle sind das Hexadezimal- und MSIL-Assemblyformat (Microsoft Intermediate Language) der Anweisung sowie eine kurze Referenzzusammenfassung aufgeführt:

Format Assemblyformat BESCHREIBUNG
79 <T> Unbox valType Extrahiert die Werttypdaten aus obj, deren Schachteldarstellung.

Das Stapelübergangsverhalten in sequenzieller Reihenfolge lautet:

  1. Ein Objektverweis wird auf den Stapel gepusht.

  2. Der Objektverweis wird aus dem Stapel gekippt und in einen Werttypzeiger entpackt.

  3. Der Werttypzeiger wird auf den Stapel gepusht.

Ein Werttyp verfügt über zwei separate Darstellungen innerhalb der Common Language Infrastructure (CLI):

  • Ein unformatiertes Formular, das verwendet wird, wenn ein Werttyp in ein anderes Objekt eingebettet ist.

  • Ein "boxed"-Formular, bei dem die Daten im Werttyp in ein Objekt umschlossen (geschachtelt) werden, sodass sie als unabhängige Entität vorhanden sein können.

Die unbox Anweisung konvertiert den Objektverweis (Typ O), die boxed-Darstellung eines Werttyps in einen Werttypzeiger (verwalteter Zeiger, Typ &), dessen ungepackte Form. Der angegebene Werttyp (valType) ist ein Metadatentoken, das den Typ des Werttyps angibt, der im boxed-Objekt enthalten ist.

Im Gegensatz zum BoxErstellen einer Kopie eines Werttyps zur Verwendung im -Objekt ist nicht erforderlich, unbox um den Werttyp aus dem -Objekt zu kopieren. In der Regel wird einfach die Adresse des Werttyps berechnet, der bereits im boxed-Objekt vorhanden ist.

InvalidCastException wird ausgelöst, wenn das Objekt nicht als valTypeboxed ist.

NullReferenceException wird ausgelöst, wenn der Objektverweis ein NULL-Verweis ist.

TypeLoadException wird ausgelöst, wenn der Werttyp valType nicht gefunden werden kann. Dies wird in der Regel erkannt, wenn MSIL-Anweisungen (Microsoft Intermediate Language) nicht zur Laufzeit, sondern in nativen Code konvertiert werden.

Die folgende Emit Methodenüberladung kann den unbox opcode verwenden:

Gilt für: