是否有可能窥视表面下方的C#Stack variable
层的值?在我的例子中,我需要查看下面的值1。我可以Peek
将值记录到临时变量Pop
中,然后读取Push
临时值,但有更好的方法吗?
答案 0 :(得分:9)
Stack
也是IEnumerable
,因此您可以使用标准方法来操纵它们。例如,打开System.Linq
命名空间后,您可以编写stack.Skip(1).First()
。
答案 1 :(得分:4)
考虑为此目的使用linked list。与堆栈一样,从中弹出(使用RemoveFirst
)是一个O(1)操作,就像访问第一个元素(偷看)一样。与堆栈不同,您还可以使用<stack object>.First.Next
在常量时间内轻松访问第二个元素。
答案 2 :(得分:2)
如果您需要对结构进行某种随机访问,您可能需要考虑围绕一个结构编写一个包装器,该结构为您提供随机访问,使您仍然可以作为堆栈对其进行操作,但是能够如果需要,可以进行随机访问。
最简单的答案是链接列表的包装。虽然它没有随机访问(您需要迭代搜索列表),但它将提供您需要的基本功能,并且很容易实现您自己的包装器以实现类似堆栈的功能。