重现代码:
var dmFoo = new DynamicMethod("Foo", typeof(void), Type.EmptyTypes);var ilFoo = dmFoo.GetILGenerator();//...var label = ilFoo.DefineLabel();//...var dmBar = new DynamicMethod("Bar", typeof(void), Type.EmptyTypes);var ilBar = dmBar.GetILGenerator();//...ilBar.MarkLabel(label);
报错信息为:
...NullReferenceException...at System.Reflection.Emit.ILGenerator.MarkLabel(Label loc)at ...(your code)
很明显代码中把ilFoo的Label试图放到ilBar里去,这时显然应该抛出一个ArgumentException,而Framework却傻乎乎的抛出了个NullReferenceException,害得我白到网上找了两个小时,却没发现什么类似的报错,最后才发现其实是一个参数弄错了