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

时间:2015-03-23 12:32:50

标签: c# for-loop foreach queue

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]);

}

1 个答案:

答案 0 :(得分:4)

for使用Queue - 循环没有多大意义,因为它不是带索引的集合(如IList<T>)。因此,您无法随机访问项目(如数组:ar[0])。您可以使用Queue<T>.Dequeue获取第一个并将其删除,或使用Queue<T>.Peek返回第一个而不删除它。

如果您使用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());