OpCodes.Unbox Campo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Converte la rappresentazione boxed di un tipo di valore nel relativo formato unboxed.
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
Valore del campo
Commenti
La tabella seguente elenca il formato di assembly Esadecimale e MSIL (Microsoft Intermediate Language), insieme a un breve riepilogo dei riferimenti:
Formato | Formato assembly | Descrizione |
---|---|---|
79 <T > |
Unbox valType |
Estrae i dati del tipo di valore da obj , la relativa rappresentazione boxed. |
Il comportamento di transizione dello stack, in ordine sequenziale, è:
Viene eseguito il push di un riferimento a un oggetto nello stack.
Il riferimento all'oggetto viene estratto dallo stack e unboxed in un puntatore di tipo valore.
Il puntatore al tipo di valore viene inserito nello stack.
Un tipo valore ha due rappresentazioni separate all'interno di Common Language Infrastructure (CLI):
Modulo 'raw' utilizzato quando un tipo di valore è incorporato all'interno di un altro oggetto .
Modulo "boxed", in cui i dati nel tipo valore vengono racchiusi (boxed) in un oggetto in modo che possano esistere come entità indipendenti.
L'istruzione unbox
converte il riferimento all'oggetto (tipo O
), la rappresentazione boxed di un tipo valore, in un puntatore di tipo valore (un puntatore gestito, tipo &
), il formato unboxed. Il tipo di valore fornito (valType
) è un token di metadati che indica il tipo di valore contenuto nell'oggetto boxed.
A differenza di Box, che è necessario per creare una copia di un tipo valore da utilizzare nell'oggetto, unbox
non è necessario per copiare il tipo di valore dall'oggetto . In genere calcola semplicemente l'indirizzo del tipo di valore già presente all'interno dell'oggetto boxed.
InvalidCastException viene generata se l'oggetto non è sottoposto a boxing come valType
.
NullReferenceException viene generata se il riferimento all'oggetto è un riferimento Null.
TypeLoadException viene generata se non è possibile trovare il tipo di valType
valore. Questo viene in genere rilevato quando le istruzioni MSIL (Microsoft Intermediate Language) vengono convertite in codice nativo, anziché in fase di esecuzione.
L'overload del metodo seguente Emit può usare il unbox
codice operativo: