Используйте 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);
Другие вопросы по тегам