OpCodes.Unbox Pole
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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:
Odkaz na objekt je vložen do zásobníku.
Odkaz na objekt se zobrazí ze zásobníku a rozbalí se na ukazatel typu hodnoty.
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: