当前位置:  开发笔记 > 后端 > 正文

Reflection.Emit - 从堆栈访问最顶层但只有一个项目

如何解决《Reflection.Emit-从堆栈访问最顶层但只有一个项目》经验,为你挑选了1个好方法。

在.NET中有没有办法使用Reflection.Emit,从堆栈中访问最顶层的项目?因此,如果A是最顶层,B则是下一个 - 我想处理B然后是A.将B复制到A 之上是可以的(因为当我到达时它可以简单地"弹出"第二个B).

目前,我宣布当地人:

    LocalBuilder loc = il.DeclareLocal(typeof(Foo));
    il.Emit(OpCodes.Stloc, loc); // store and pop topmost stack item
    // work with (pop) previous stack item 
    il.Emit(OpCodes.Ldloc, loc); // push old topmost stack item

是否存在不需要显式本地的路由?



1> kvb..:

我不这么认为.在IL中没有任何像swap这样的指令可以让你做你想做的事.为什么你认为使用当地人是令人反感的?如果JIT编译器足够好,这将不会导致比在IL中使用假设的交换操作更慢的机器代码.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有