Compartir vía


OpCodes.Ldind_Ref Campo

Definición

Carga indirectamente una referencia a objeto como tipo O (referencia a objeto) en la pila de evaluación.

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 

Valor de campo

Comentarios

En la tabla siguiente se muestra el formato de ensamblado hexadecimal y lenguaje intermedio de Microsoft (MSIL), junto con un breve resumen de referencia:

Formato Formato de ensamblado Descripción
50 ldind.ref Carga la referencia de objeto en la dirección addr en la pila como un tipo O

El comportamiento de transición de pila, en orden secuencial, es:

  1. Una dirección se inserta en la pila.

  2. La dirección se extrae de la pila; se captura la referencia de objeto ubicada en la dirección.

  3. La referencia capturada se inserta en la pila.

La ldind.ref instrucción carga indirectamente el objeto hace referencia a la dirección especificada (de tipo native int, &o *) en la pila como tipo O.

Todas las ldind instrucciones son accesos directos para una Ldobj instrucción que especifica la clase de valor integrada correspondiente.

Tenga en cuenta que los valores enteros de menos de 4 bytes se extienden a int32 (no native int) cuando se cargan en la pila de evaluación. Los valores de punto flotante se convierten en F tipo cuando se cargan en la pila de evaluación.

El lenguaje intermedio de Microsoft (MSIL) formado correctamente garantiza que las ldind instrucciones se usan de forma coherente con el tipo del puntero.

La dirección insertada inicialmente en la pila debe alinearse con el tamaño natural de los objetos de la máquina o NullReferenceException puede producirse (consulte la Unaligned instrucción de prefijo para medidas preventivas). Los resultados de todas las instrucciones de MSIL que devuelven direcciones (por ejemplo, Ldloca y Ldarga) se alinean de forma segura. Para los tipos de datos mayores de 1 byte, el orden de bytes depende de la CPU de destino. Es posible que el código que dependa del orden de bytes no se ejecute en todas las plataformas.

NullReferenceException se puede producir si se detecta una dirección no válida.

La sobrecarga del método siguiente Emit puede usar el ldind.ref código de operación:

Se aplica a