Выброс IL - операция может дестабилизировать время выполнения при сохранении, а затем при загрузке

Итак, у меня есть следующий IL:

il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Ret);

Который отлично работает. В основном он возвращает заданный аргумент. Однако это:

il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Stloc_0);
il.Emit(OpCodes.Ldloc_0);
il.Emit(OpCodes.Ret);

Не работает. Он вылетает с исключением «Операция может дестабилизировать среду выполнения». Теперь я знаю, что цель этого бесполезна, но я пытаюсь достичь своей цели маленькими шагами. Почему это не работает?


person jakobbotsch    schedule 24.12.2010    source источник


Ответы (1)


Вы объявили местный? Совпадают ли типы arg0 и loc0? Также вы знаете, что arg0 в методе экземпляра — это ссылка this, верно?

person fejesjoco    schedule 24.12.2010
comment
D'oh, это было глупо (я не объявлял местный). Большое тебе спасибо! - person jakobbotsch; 25.12.2010