Existe-t-il un moyen .NET, utilisant Reflection.Emit
, pour accéder à l'élément le plus haut de la pile? Donc, si A est le plus haut, et B ensuite - je veux traiter B puis A. Il serait bien de dupliquer B dessus de A (puisque je peux simplement "pop" le deuxième B quand j'y arriverai).Reflection.Emit - accès à l'élément le plus en amont de la pile
Actuellement, je déclare local:
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
est-il une route qui n'a pas besoin local explicite?
Pour le "pourquoi" - ceci est dans le code généré qui devrait introduire plus de locaux que je veux. Si je pouvais utiliser le haut de la pile à la place, je pourrais sauvegarder des quantités non-triviales d'espace de pile (les sections locales sont réservées indépendamment de l'utilisation, AFAIK). –