3
我發一些IL,在這裏我的代碼:IL無效的程序,不明白爲什麼
mgen.Emit(OpCodes.Ldc_I4,0);
mgen.Emit(OpCodes.Newarr, typeof(object));
mgen.Emit(OpCodes.Stloc_1); // THIS SHOULD
mgen.Emit(OpCodes.Ldloc_1); // MATCH THIS ONE
mgen.Emit(OpCodes.Callvirt, typeof(IInternalFactory).GetMethod("Create"));
mgen.Emit(OpCodes.Castclass, method.ReturnType);
mgen.Emit(OpCodes.Ret);
這是一項正在進行的工作,我已經創建一個數組,現在我準備與它做一些事情,所以我決定將它存儲(Stloc_1),然後儘快將它推回到堆棧(Ldloc_1),只要我做了這些指示IL被髮信號無效,但如果我理解正確,這些指令應該離開堆棧未修改。沒有這兩條指令,IL完美地工作。所以我不能不明白爲什麼隨後推送的流行音不起作用。
您是否確實創建了您試圖存儲的地方? – Sven 2012-04-27 09:00:59
@Sven謝謝,這是我的問題的正確答案,如果你想發帖,我會接受:) – 2012-04-27 09:03:31
我已經添加了答案。 – Sven 2012-04-27 09:07:28