C# 为什么要使用queue.Peek()而不是queue.First()/Last()

C# 为什么要使用queue.Peek()而不是queue.First()/Last(),c#,C#,队列包含特殊方法Queue.Peek(),既然我可以使用常规Queue.First()和Queue.Last()?Peek是队列的经典方法,其中asFirst和Last是Linq方法。由于队列最有可能实现IEnumerable,因此首先得到的方法和最后得到的方法与严格队列无关 编辑 违反排队法则并不是世界末日。听起来您正在使用该结构来满足您的需求。这可能会让下一个程序员感到困惑,尽管他们希望队列像队列一样工作。也许您创建了一个扩展队列的类,称为StackedQueue。那么,如果有人需要维护您

队列包含特殊方法
Queue.Peek()
,既然我可以使用常规
Queue.First()
Queue.Last()

Peek
是队列的经典方法,其中as
First
Last
是Linq方法。由于队列最有可能实现
IEnumerable
,因此首先得到的方法和最后得到的方法与严格队列无关


编辑


违反排队法则并不是世界末日。听起来您正在使用该结构来满足您的需求。这可能会让下一个程序员感到困惑,尽管他们希望队列像队列一样工作。也许您创建了一个扩展队列的类,称为StackedQueue。那么,如果有人需要维护您的代码,他们不会期望队列的行为

您正在查看哪个队列类?C#中有多个队列类可用。例如,、或您可能使用了缩写,就像3个示例一样。我的意思是
System.Collections.Generic.Queue
,但您现在明白我为什么问最初的问题了吗,以及为什么您对“C
Queue
”的回答不够充分吗?我的意思不是
MessageQueue
(因为我写了
Queue
)但是现在我知道c#包含两个不同的队列:from System.Collections和System.Collections.Generic。然而,我认为这些查询可能非常相似,所以我的问题适用于这两个查询,所以我所指的确切队列并不重要:)我明白了,但我可以使用这些方法吗?因为队列是
IEnumerable
的,所以保证他们工作,对吗?为什么我需要额外的
Peek
方法呢?。问题是-我需要从
队列的另一侧获取元素,并希望使用
IEnumerable
方法。如果需要访问队列的后部,请不要使用队列。@Rawling接下来要使用什么?(我也可以使用
queue
但缓存最后添加的值)这些方法可以很好地工作,但是,从语义上讲,您不需要队列。也许列表、数组或集合可能适合您的需要。@MikeStewart,但我需要
排队
出列
,并枚举和访问第一个/最后一个元素。我需要一个结构,以保持酒吧的“移动平均线”指标