6

是否可以窥视variable表面以下 C# Stack 层的值?在我的示例中,我需要查看下面的值一。我可以Peek将值记录到临时变量中,Pop然后读取,然后Push将临时值返回,但是有更好的方法吗?

4

3 回答 3

14

AStack也是IEnumerable,因此您可以使用标准方法来操作它们。例如,在System.Linq命名空间打开的情况下,您可以编写stack.Skip(1).First().

于 2014-01-01T02:16:09.997 回答
5

考虑为此目的使用链表。与堆栈一样,从堆栈中弹出(使用RemoveFirst)是一个 O(1) 操作,访问第一个元素(窥视)也是如此。与堆栈不同,您还可以<stack object>.First.Next在恒定时间内非常轻松地访问第二个元素。

于 2014-01-01T02:10:54.777 回答
2

如果您需要对结构进行某种随机访问,您可能需要考虑在结构周围编写一个包装器,以使您仍然可以将其作为堆栈操作,但能够执行随机访问,从而为您提供随机访问如果需要的话。

最简单的答案是链接列表的包装器。虽然它没有随机访问(您需要迭代地搜索列表),但它会提供您需要的基本功能,并且很容易围绕它实现您自己的包装器以实现类似堆栈的功能。

于 2014-01-01T02:15:08.547 回答