能否窥探堆栈下面的内容?

9

是否有可能查看C# Stack 变量表面以下的层次结构中的值?在我的例子中,我需要查看下面一个值。我可以使用Peek将值记录到临时变量中,然后Pop和读取,然后Push临时值回去,但是有更好的方法吗?

3个回答

18

在IT技术中,Stack也是一个 IEnumerable。因此,您可以使用用于操作这些内容的标准方法。例如,如果打开了System.Linq名称空间,则可以编写stack.Skip(1).First()


4
考虑使用链表来实现此目的。与堆栈类似,从链表中弹出(使用RemoveFirst)是一个O(1)操作,访问第一个元素(查看)也是如此。与堆栈不同的是,在常数时间内可以非常容易地访问第二个元素,只需使用<stack object>.First.Next即可。

1
如果您需要对结构进行某种形式的随机访问,您可能需要考虑编写一个包装器,以使您仍然可以将其作为堆栈操作,但如果需要则能够执行随机访问。
最简单的解决方法是在链表周围编写一个包装器。 虽然它没有随机访问(您需要通过迭代搜索列表来进行访问),但它可以提供您所需的基本功能,并且很容易为其编写一个简单的堆栈包装器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接