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]);
}
答案 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());