gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:55:32 26 4
gpt4 key购买 nike

.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

是否有不需要显式本地路由?

最佳答案

我不这么认为。在IL中,没有任何诸如swap之类的指令可以让您做自己想做的事情。为什么您认为使用本地变量令人反感?如果JIT编译器足够好,那么与在IL中使用假设的交换操作相比,这不会导致机器代码变慢。

关于.net - Reflection.Emit-从堆栈访问最顶层但一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/718003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com