use*_*443 5 c# il exception reflection.emit .net-assembly
我有新问题.我的代码:
.method public static void Main() cil managed
{
.entrypoint
// Code size 3 (0x3)
.maxstack 1
IL_0000: ldnull
IL_0001: stloc.0
IL_0002: ret
} // end of method Program::Main
Run Code Online (Sandbox Code Playgroud)
C#代码:
il.Emit(OpCodes.Ldnull);
il.Emit(OpCodes.Stloc_0);
il.Emit(OpCodes.Ret);
Run Code Online (Sandbox Code Playgroud)
我通过System.Reflection和System.Reflection.Emit类生成此代码.有谁知道为什么这不起作用?请帮忙.

一个小问题 - 我应该生成构造函数吗?
您尝试在本地0(stloc.0)中存储null,但实际上并未定义任何本地.
您需要使用该DeclareLocal方法来定义本地,那么你就可以传递给Emit一个接受LocalBuilder过载(例如,你可以用它来发出stloc操作码,其次是你的LocalBuilder); 或者你可以继续使用,stloc.0因为你知道只有一个本地人.
| 归档时间: |
|
| 查看次数: |
1014 次 |
| 最近记录: |