OpCodes.Ldind_Ref Champ

Définition

Charge indirectement une référence d'objet en tant que type O (référence d'objet) dans la pile d'évaluation.

public: static initonly System::Reflection::Emit::OpCode Ldind_Ref;
public static readonly System.Reflection.Emit.OpCode Ldind_Ref;
 staticval mutable Ldind_Ref : System.Reflection.Emit.OpCode
Public Shared ReadOnly Ldind_Ref As OpCode 

Valeur de champ

Remarques

Le tableau suivant répertorie le format d’assembly MSIL et hexadécimal de l’instruction, ainsi qu’un bref résumé des références :

Format Format d’assembly Description
50 ldind.ref Charge la référence d’objet à l’adresse addr sur la pile en tant que type O

Le comportement transitionnel de la pile, dans l’ordre séquentiel, est le suivant :

  1. Une adresse est envoyée dans la pile.

  2. L’adresse est extraite de la pile ; la référence d’objet située à l’adresse est extraite.

  3. La référence extraite est envoyée dans la pile.

L’instruction ldind.ref charge indirectement la référence d’objet à l’adresse spécifiée (de type native int, &ou *) sur la pile en tant que type O.

Toutes les ldind instructions sont des raccourcis pour une Ldobj instruction qui spécifie la classe de valeur intégrée correspondante.

Notez que les valeurs entières inférieures à 4 octets sont étendues à int32 (et non native int) lorsqu’elles sont chargées dans la pile d’évaluation. Les valeurs à virgule flottante sont converties en type lorsqu’elles F sont chargées dans la pile d’évaluation.

Microsoft Intermediate Language (MSIL) correctement formé garantit que les ldind instructions sont utilisées de manière cohérente avec le type du pointeur.

L’adresse initialement envoyée sur la pile doit être alignée sur la taille naturelle des objets sur la machine, sinon un NullReferenceException peut se produire (voir l’instruction de Unaligned préfixe pour les mesures préventives). Les résultats de toutes les instructions MSIL qui retournent des adresses (par exemple, Ldloca et Ldarga) sont alignés en toute sécurité. Pour les types de données supérieurs à 1 octet, l’ordre des octets dépend du processeur cible. Le code qui dépend de l’ordre des octets peut ne pas s’exécuter sur toutes les plateformes.

NullReferenceException peut être levée si une adresse non valide est détectée.

La surcharge de méthode suivante Emit peut utiliser l’opcode ldind.ref :

S’applique à