【发布时间】:2014-03-27 18:53:51
【问题描述】:
如标题所示。为什么Stack 类需要一个方法来返回顶部对象的引用?我一直被告知,方法表明涉及一些计算,并且应该返回简单的对象和属性。 Peek() 方法没有参数,在代码级别上它(我认为)是一个简单的操作。
问题是:这有什么具体原因吗?任何影响性能的隐藏行为?
编辑:我不知道类的实现,但是 f.e.如果该方法在下面使用枚举器,那么多次迭代到最后一个元素将是不明智的。另一方面,如果是单个IList,那么它应该不会对性能产生任何更大的影响。
【问题讨论】:
-
堆栈是一个奇怪的东西,你可以从里面推送和弹出东西,但不能得到特定的项目。有时您想知道最重要的项目。所以 peek() 被引入。你可以有一个属性 TopItem 等。这是@TomTom 所说的风格问题
-
@DaveShaw:无论如何,当前来源。未来的版本可能会在不更改接口的情况下采用不同的实现。
-
除了答案所说的动词之外,它更像是保留实际不同数据的属性 - peek 是集合中的计算值 - 最后一项 - 属性也被解包到方法中:a get例如 -er 和 set-er。