ILGenerator: как добавить логическое значение в стек

Вот как я могу поместить значение с плавающей запятой в стек (на С#):

ILGenerator gen = method.GetILGenerator();
gen.Emit(OpCodes.Ldc_R4, (float)12.5);

Как я могу поместить логическое значение в стек с помощью метода Emit?


person Pavel Podlipensky    schedule 06.09.2009    source источник


Ответы (1)


В стеке оценки нет представления логического значения. bool, char, byte, ushort, uint и их варианты со знаком представлены в виде 4-байтового целого числа со знаком (i4).

Истинный:

ldc.i4.1

ЛОЖЬ:

ldc.i4.0
person Sam Harwell    schedule 06.09.2009
comment
Если все представлено в виде 4-байтового целого числа со знаком, есть ли преимущества использования памяти для использования байта вместо ushort (например), если значения не превышают максимальное значение байта? - person Hybris95; 31.03.2015
comment
@ Hybris95 Стек оценки отличается от полей объекта. Поля (особенно в структуре) и элементы массивов могут быть более плотно упакованы для экономии памяти. - person Sam Harwell; 19.12.2016