OpCodes.Unbox, champ
Mise à jour : novembre 2007
Convertit la représentation boxed d'un type valeur en forme unboxed.
Assembly : mscorlib (dans mscorlib.dll)
Le tableau suivant répertorie le format d'assembly hexadécimal et MSIL (Microsoft Intermediate Language) de l'instruction et donne un bref résumé de référence :
Format | Format d'assembly | Description |
|---|---|---|
79 < T > | unbox valType | Extrait les données de type valeur de obj (représentation boxed). |
Le comportement de transition de la pile, dans un ordre séquentiel, est le suivant :
Une référence d'objet fait l'objet d'un push dans la pile.
La référence d'objet est extraite (pop) de la pile et convertie (conversion de type « unboxing ») en pointeur de type valeur.
Le pointeur de type valeur fait l'objet d'un push dans la pile.
Un type valeur a deux représentations distinctes dans l'infrastructure CLI (Common Language Infrastructure) :
une forme « brute » utilisée lorsqu'un type valeur est incorporé dans un autre objet ;
une forme « boxed » où les données du type valeur sont encapsulées (converties) dans un objet afin qu'il puisse exister en tant qu'entité indépendante.
L'instruction unbox convertit la référence d'objet (type O), la représentation boxed d'un type valeur, en pointeur de type valeur (un pointeur non managé, type &), sa forme unboxed. Le type valeur fourni (valType) est un jeton de métadonnées indiquant le type de type valeur contenu dans l'objet converti.
Contrairement à Box, qui est requis pour faire une copie d'un type valeur à utiliser dans l'objet, unbox n'est pas requis pour copier le type valeur à partir de l'objet. En général, il calcule simplement l'adresse du type valeur déjà présent dans l'objet converti.
InvalidCastException est levé si l'objet n'est pas converti (conversion de type « boxing ») en tant que valType.
NullReferenceException est levé si la référence d'objet est une référence null.
TypeLoadException est levé si le type valeur valType est introuvable. Cette exception est généralement détectée lors de la conversion des instructions MSIL (Microsoft Intermediate Language) en code natif et non pas au moment de l'exécution.
La surcharge de méthode Emit suivante peut utiliser l'opcode unbox :
ILGenerator.Emit(OpCode, Type)
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.