何时在C#中使用Stack <T>集合?

jho*_*ard 7 c# data-structures

我不知道如何Stack()Stack<T>工作,但我实在看不出任何场景中的数组,List<T>或者IEnumerable<T>是不是一个更好,更容易的选择.

任何人都可以为我提供一个真实世界的使用示例Stack<T>吗?

rad*_*bob 10

理想情况下,您可以根据需要使用或创建反映现实世界中工作方式的类,以及您在代码中建模的内容.这些类为我们提供了抽象级别,因此我们可以根据我们的建模/模拟进行编码.另外,在编写一些复杂的东西时,使用熟悉的范例会有所帮助.即:哦,这个Fuzzinator类使用Stack.我知道堆栈是什么以及它是如何工作的.

其次,更高级别的抽象类为我们提供了有效的代码(我们假设.NET框架已经过测试)并为我们节省了重新发明轮子的时间和痛苦.

第三,代码更易于阅读,更易于理解,更易于更改等.它更易于维护.

使用具有更精细功能的类有助于限制我们使用它的方式.

总的来说,当它在适当的抽象级别编码时,你的应用程序会更好.

Stack是这些类中的一个.

我的HP-41X计算器使用堆栈进行算术运算.这种计算方式称为RPN - 反向波兰表示法.

如果我正在模拟一个自助餐厅,那么Stack对于那堆盘子来说是完美的.板从顶部进出堆叠.不是中间,不是结束; 只是顶部.一堆.我只能使用Push()和Pop()板,这使得代码更加简单明了.

或者,想象使用C#等效的子原子粒子进行编码 - 通用集合或通用IEnumerable等.我最终使用通用实用方法和属性,通用名称具有多变量数量的参数,这些参数总体上模糊了我的事实堆叠板.


Geo*_*ett 6

深度优先树遍历。与队列相反,用于广度优先树遍历。


管理在用户浏览时向用户呈现不同的屏幕。显示屏幕会将其推入堆栈,“返回”会将其弹出。绘制顶部屏幕。


当您想要一个可以添加内容并始终知道何时获取内容的集合时,它是最近添加的。


实现撤消/重做功能。