如何在 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());
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());