Sdílet prostřednictvím


OpCodes.Unbox Pole

Definice

Převede reprezentaci typu hodnoty v rámečku do jeho nezasílané podoby.

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 

Hodnota pole

Poznámky

Následující tabulka uvádí šestnáctkový formát sestavení instrukce a formát sestavení MSIL (Microsoft Intermediate Language) spolu se stručným přehledem referencí:

Formát Formát sestavení Description
79 <T> Unbox valType Extrahuje data typu hodnoty z obj, jeho krabicové znázornění.

Přechodné chování zásobníku v sekvenčním pořadí je:

  1. Odkaz na objekt je vložen do zásobníku.

  2. Odkaz na objekt se zobrazí ze zásobníku a rozbalí se na ukazatel typu hodnoty.

  3. Ukazatel typu hodnoty je vložen do zásobníku.

Typ hodnoty má v rámci common language infrastructure (CLI) dvě samostatné reprezentace:

  • "Nezpracovaný" formulář, který se používá, když je typ hodnoty vložen v jiném objektu.

  • Formulář s rámečkem, ve kterém jsou data typu hodnoty zabalena (zabalena) do objektu, aby mohl existovat jako nezávislá entita.

Instrukce unbox převede odkaz na objekt (typ O), reprezentaci typu hodnoty v rámečku na ukazatel typu hodnoty (spravovaný ukazatel, typ &), jeho nezaboxovanou formu. Zadaný typ hodnoty (valType) je token metadat označující typ hodnoty obsažený v objektu v rámečku.

Na rozdíl od Boxpříkazu , který je nutný k vytvoření kopie typu hodnoty pro použití v objektu, unbox není nutné kopírovat typ hodnoty z objektu. Obvykle jednoduše vypočítá adresu typu hodnoty, která se již nachází uvnitř objektu v rámečku.

InvalidCastException je vyvolána, pokud objekt není v rámečku označený jako valType.

NullReferenceException je vyvolán, pokud je odkaz na objekt nulový.

TypeLoadException je vyvolán, pokud nebyl nalezen typ valType hodnoty. To se obvykle zjistí, když jsou instrukce jazyka MSIL (Microsoft Intermediate Language) převedeny na nativní kód, nikoli za běhu.

Následující Emit přetížení metody může použít unbox opcode:

Platí pro