Гарантированно ли это всегда печатать 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.
Queue<T>.GetEnumerator()
имеет собственную страницу MSDN, включая пример кода, в котором говорится, чтоIEnumerable
, который использует вызовforeach
, будет вести себя так же, какPeek()
иPop()
. - person Scott Chamberlain   schedule 26.08.2013Queue<T>
? Мне кажется, это хорошая отсылка (а как еще будет работатьQueue<T> b = new Queue<T>(a)
?). - person user7116   schedule 26.08.2013Queue<T>
реализовано как циклический буфер,Queue<T> b = new Queue<T>(a)
можно реализовать путем копирования резервного массива и индексовHead
иTail
. Не было бы необходимости повторять элементы. - person Jim Mischel   schedule 27.08.2013