如何窥视堆栈底部的对象?

时间:2012-11-10 07:18:52

标签: c# stack

我正在编写一个ActionScript ByteCode解析器,用于获取堆栈底部的对象。现在我可以告诉ActionScript虚拟机(AVM)中堆栈的底部是首先被压入堆栈的对象。我真的很想避免从堆栈中弹出所有物品,只是为了到达底部。有谁知道是否可以获得底部项目?如果没有,AVM会做一些奇怪的事情:P

谢谢,乔希

3 个答案:

答案 0 :(得分:2)

根据定义,这是不可能的。堆栈的每个元素只知道他之前的元素,所以使用clasic堆栈实现你不知道堆栈底部元素的地址。 使用另一个结构库来​​存储对象。 (例如,列表)

答案 1 :(得分:1)

你要做的是违背堆栈的目的。但是你可以编写一个包装类。

当调用Push方法并且堆栈为空时,将其添加到堆栈并在类中保留引用。当调用Pop方法并且堆栈只有一个对象清除引用时,你保留。

答案 2 :(得分:0)

您可以使用ToArray()。

var stackArray = myStack.ToArray();

然后:

stackArray.Lenght - 1

访问最后一个元素。