[英]“AccessViolationException was unhandled” error in C# Managed Code
我有新问题。 我的代码:
.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
C#代码:
il.Emit(OpCodes.Ldnull);
il.Emit(OpCodes.Stloc_0);
il.Emit(OpCodes.Ret);
我通过System.Reflection和System.Reflection.Emit类生成此代码。 有谁知道为什么这不起作用? 请帮忙。
一个小问题 - 我应该生成构造函数吗?
您正尝试在本地0( stloc.0
)中存储null,但实际上并未定义任何本地。
您需要使用DeclareLocal
方法来定义本地,然后您可以将其传递给接受LocalBuilder的Emit
重载(例如,您可以使用它来发出stloc
操作码,然后是LocalBuilder); 或者你可以继续使用stloc.0
因为你知道只有一个本地。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.