如何在 C# 中使用 for 循环从队列中检索值?

How to retrieve values from Queue using for loop in C#?

class Program
    {
        static void Main(string[] args)
        {
            Queue ar = new Queue();

            ar.Enqueue(45);
            ar.Enqueue(23);
            ar.Enqueue(2);
            ar.Enqueue(87);

            foreach (int x in ar)
            {    
                Console.Write("{0}  ", x);
            }                 
            Console.ReadLine();   
       }
    }

我知道如何使用 foreach 循环从队列中检索值。但我可以知道在 for 循环的帮助下可以做同样的事情吗?

我尝试了以下代码。但是 ar[i] 不是有效代码。 ar[i] 的合适代码是什么?

for (int i = 0 ; i < ar.count ; i++) {

         Console.Write("{0}  ", ar[i]);

}

Queue 使用 for 循环没有多大意义,因为它不是带有索引的集合(如 IList<T>)。所以你不能随机访问项目(与数组一样:ar[0])。您可以使用 Queue<T>.Dequeue to get the first and remove it or use Queue<T>.Peek 到 return 第一个而不删除它。

如果您使用 for 循环,您甚至会得到预期的行为:

for(int i = 0; i < ar.Count; i++)
     Console.Write("{0}  ", ar.Dequeue());

这显示并显示所有 4 个项目吗?不,只有前两个,因为 Queue.Count 在循环中动态减少,而计数器变量 i 增加,因此循环停止在 2.

所以 for 循环对于这个集合来说是错误的循环类型。一个while更合适:

while(ar.Count > 0)
    Console.Write("{0}  ", ar.Dequeue());