使用emit返回null

本文关键字:null 返回 emit 使用 | 更新日期: 2023-09-27 18:02:02

我一直在使用FastMember项目。它包含以下代码:

il.Emit(OpCodes.Ldarg, 2); 
il.Emit(OpCodes.Newobj, typeof(ArgumentOutOfRangeException).GetConstructor(new[] { typeof(string) }));
il.Emit(OpCodes.Throw);

我想把它改成只返回null。我试着用单线il.Emit(OpCodes.Ret);代替它。然而,我得到无效的程序错误使用它。如何使用发出的代码将返回值设置为null ?

使用emit返回null

如果你只是释放ret,那就像c#中的return;。但你需要return null;

你应该使用

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