为什么Stack.Peek()是一个方法?

Tar*_*rec 9 c# stack peek

如标题中所示.为什么Stack类需要一个方法来返回顶层对象的引用?我总是被告知,方法表明涉及一些计算,而简单的对象应该返回属性而不是.Peek()方法没有参数,在代码级别上它(我认为)是一个简单的操作.

问题是:是否存在特定的原因?任何影响性能的隐藏行为?

编辑:我不知道类的实现,但是如果方法使用下面的枚举器,那么多次迭代到最后一个元素是不明智的.另一方面,如果它是单一的IList,那么它不应该对性能产生更大的影响.

C.E*_*uis 12

Peek是一个动词,因此在我的书中Peek() 应该是一种方法.但是,如果名称不同,它也可能是一个属性.

请记住,任何属性都有关联的get和/或set方法,所以你最终会得到一种方法.


小智 6

我理解这个问题为"为什么它是一种方法,而不是一种财产".

一个原因可能是一致性 - 所有访问方法实际上都是方法.这完全是一个风格问题,因为从纯粹的代码角度来看,我认为没有理由不把它作为一个属性.