OpCodes.Ldind_Ref Поле
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Загружает ссылку на объект как тип O (ссылку на объект) в стек вычислений косвенно.
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
Значение поля
Комментарии
В следующей таблице перечислены шестнадцатеричные и шестнадцатеричные и Microsoft формат сборки промежуточного языка (MSIL) инструкции, а также краткая сводка по ссылке:
| Формат | Формат сборки | Description |
|---|---|---|
| 50 | ldind.ref | Загружает ссылку на объект по адресу addr в стек в качестве типа O |
Переходное поведение стека в последовательном порядке:
Адрес передается в стек.
Адрес подается из стека; Ссылка на объект, расположенная по адресу, извлекается.
Извлекаемая ссылка отправляется в стек.
Инструкция ldind.ref косвенно загружает ссылку на объект, указанный адрес (тип native int, &или *) в стек в виде типа O.
ldind Все инструкции — это сочетания клавиш для Ldobj инструкции, указывающей соответствующий встроенный класс значений.
Обратите внимание, что целые значения менее 4 байтов расширяются ( int32 не native int) при загрузке в стек вычислений. Значения с плавающей запятой преобразуются в F тип при загрузке в стек вычислений.
Правильно сформированный Microsoft промежуточный язык (MSIL) гарантирует, что инструкции ldind используются в соответствии с типом указателя.
Адрес, первоначально отправленный на стек, должен быть выровнен по естественному размеру объектов на компьютере или NullReferenceException может произойти (см Unaligned . инструкцию префикса для предотвращения мер). Результаты всех инструкций MSIL, возвращающих адреса (например, Ldloca и Ldarga) безопасно выравниваются. Для типов данных, превышающих 1 байт, порядок байтов зависит от целевого ЦП. Код, зависящий от порядка байтов, может не выполняться на всех платформах.
NullReferenceException может возникать, если обнаружен недопустимый адрес.
Следующая Emit перегрузка метода может использовать ldind.ref код opcode: