OpCodes.Unbox Pole
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Konwertuje skrzynkową reprezentację typu wartości na formularz bez skrzynki odbiorczej.
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
Wartość pola
Uwagi
W poniższej tabeli wymieniono format zestawu szesnastkowy i Microsoft Intermediate Language (MSIL) instrukcji wraz z krótkim podsumowaniem referencyjnym:
| Format | Format zestawu | Opis |
|---|---|---|
79 <T> |
Unbox valType |
Wyodrębnia dane typu wartości z obj, jego reprezentacja w polu. |
Zachowanie przejściowe stosu w kolejności sekwencyjnej jest następujące:
Odwołanie do obiektu jest wypychane do stosu.
Odwołanie do obiektu jest zwinięte ze stosu i rozpakowane do wskaźnika typu wartości.
Wskaźnik typu wartości jest wypychany do stosu.
Typ wartości ma dwie oddzielne reprezentacje w ramach infrastruktury języka wspólnego (CLI):
Formularz "nieprzetworzony" używany, gdy typ wartości jest osadzony w innym obiekcie.
Formularz "boxed", w którym dane w typie wartości są opakowane (boxed) do obiektu, aby mogły istnieć jako niezależna jednostka.
Instrukcja unbox konwertuje odwołanie do obiektu (typ O), skrzynkową reprezentację typu wartości na wskaźnik typu wartości (wskaźnik zarządzany, typ &), jego formularz bez skrzynki odbiorczej. Podany typ wartości (valType) to token metadanych wskazujący typ wartości zawarty w polu.
W przeciwieństwie do Boxmetody , która jest wymagana do utworzenia kopii typu wartości do użycia w obiekcie, unbox nie jest wymagana do skopiowania typu wartości z obiektu. Zazwyczaj oblicza on po prostu adres typu wartości, który jest już obecny wewnątrz obiektu boxed.
InvalidCastExceptionjest zgłaszany, jeśli obiekt nie jest w polu .valType
NullReferenceException jest zgłaszany, jeśli odwołanie do obiektu jest odwołaniem o wartości null.
TypeLoadException jest zgłaszany, jeśli nie można odnaleźć typu valType wartości. Jest to zwykle wykrywane, gdy instrukcje języka Microsoft pośredniego (MSIL) są konwertowane na kod natywny, a nie w czasie wykonywania.
Następujące Emit przeciążenie metody może używać unbox kodu opcode: