【发布时间】:2013-08-29 09:22:09
【问题描述】:
这是否保证总是打印123?
Queue<string> theQueue = new Queue<string>();
theQueue.Enqueue("1");
theQueue.Enqueue("2");
theQueue.Enqueue("3");
foreach(var str in theQueue)
{
Console.Write(str);
}
Console.WriteLine();
编辑:
我完全同意以任何其他顺序枚举的队列显然是不正确的。这就是我问这个问题的原因。但是,抽象数据类型 queue 仅对其 enqueue 和 dequeue 操作做出保证。
我正在寻找一个参考文档的答案,以保证 .NET BCL 中的这种排序。
【问题讨论】:
-
我认为大多数人都忽略了您的问题。队列由推送和弹出的工作方式定义。在这个方法中的迭代没有在队列的正常定义中定义
-
@bengoesboom yes it is defined,
Queue<T>.GetEnumerator()有它自己的 MSDN 页面,包括说明foreach调用使用的IEnumerable的行为与Peek()和@987654331 相同的示例代码@. -
您是否阅读了
Queue<T>的 MSDN 页面?对我来说似乎是一个很好的参考(Queue<T> b = new Queue<T>(a)还能如何发挥作用?)。 -
@ScottChamberlain 我指的是“队列”的抽象数据类型,而不是具体的实现
-
@bengoesboom 你说的这个抽象数据类型是什么?这就是 Queue
是什么,它的 GetEnumerator 函数有据可查
标签: .net collections base-class-library