OpCodes.Unbox Fält

Definition

Konverterar den boxade representationen av en värdetyp till dess oboxade formulär.

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 

Fältvärde

Kommentarer

I följande tabell visas instruktionens sammansättningsformat för hexadecimalt och Microsoft mellanliggande språk (MSIL), tillsammans med en kort referenssammanfattning:

Format Sammansättningsformat Description
79 <T> Unbox valType Extraherar värdetypsdata från obj, dess inramade representation.

Stackens övergångsbeteende i sekventiell ordning är:

  1. En objektreferens skickas till stacken.

  2. Objektreferensen poppas från stacken och tas bort till en värdetypspekare.

  3. Värdetypspekaren skickas till stacken.

En värdetyp har två separata representationer i COMMON Language Infrastructure (CLI):

  • Ett "raw"-formulär som används när en värdetyp är inbäddad i ett annat objekt.

  • Ett "boxat" formulär, där data i värdetypen omsluts (boxas) i ett objekt så att de kan finnas som en oberoende entitet.

Instruktionen unbox konverterar objektreferensen (typ O), den boxade representationen av en värdetyp till en värdetypspekare (en hanterad pekare, typ &), dess oboxade formulär. Den angivna värdetypen (valType) är en metadatatoken som anger vilken typ av värdetyp som finns i det boxade objektet.

Till skillnad från Box, som krävs för att göra en kopia av en värdetyp för användning i objektet, unbox krävs inte för att kopiera värdetypen från objektet. Vanligtvis beräknas helt enkelt adressen för den värdetyp som redan finns i det boxade objektet.

InvalidCastException genereras om objektet inte är rutat som valType.

NullReferenceException genereras om objektreferensen är en null-referens.

TypeLoadException genereras om det inte går att hitta värdetypen valType . Detta identifieras vanligtvis när instruktioner för Microsoft mellanliggande språk (MSIL) konverteras till intern kod i stället för vid körning.

Följande Emit metodöverlagring kan använda unbox opcode:

Gäller för