Используйте emit для возврата нуля
Я использую проект FastMember. Он содержит этот код:
il.Emit(OpCodes.Ldarg, 2);
il.Emit(OpCodes.Newobj, typeof(ArgumentOutOfRangeException).GetConstructor(new[] { typeof(string) }));
il.Emit(OpCodes.Throw);
Я хотел бы изменить это, чтобы просто вернуть ноль вместо этого. Я пытался заменить его одной строкой il.Emit(OpCodes.Ret);
, Тем не менее, я получаю недопустимые ошибки программы, используя это. Как мне установить возвращаемое значение равным нулю, используя выведенный код?
1 ответ
Решение
Если вы просто излучаете ret
это как return;
в C#. Но вам нужно return null;
Вы должны использовать
il.Emit(OpCodes.Ldnull);
il.Emit(OpCodes.Ret);