【发布时间】:2011-12-19 14:20:26
【问题描述】:
在 C# 中,如何检查队列是否为空?
我想遍历队列的元素,我需要知道何时停止。我怎样才能做到这一点?
【问题讨论】:
-
您使用哪个队列?请发布队列定义。
在 C# 中,如何检查队列是否为空?
我想遍历队列的元素,我需要知道何时停止。我怎样才能做到这一点?
【问题讨论】:
TryPeek() 会让你检查 Queue 是否有元素。
Queue q = new Queue();
if (!q.TryPeek(out object i)) {
/* Queue is empty */
....
}
【讨论】:
YourQueue.GetEnumerator().MoveNext() == true
【讨论】:
我建议使用 Any() 方法,因为这不会对整个队列进行计数,这在性能方面会更好。
Queue myQueue = new Queue();
if(myQueue.Any()){
//queue not empty
}
【讨论】:
myQueue.Count 不会对整个队列进行计数。大小存储在 Queue 类中的私有变量中,Count 属性只返回该变量,请参阅Queue<T>.Count Property。您指的 Count 是 linq 命名空间中的 Count() 。 Enumerable.Count
Queue test = new Queue();
if(test.Count > 0){
//queue not empty
}
【讨论】:
有一个扩展方法 .Count() 可用,因为 Queue 实现了 IEnumerable。
你也可以做_queue.Any()看看里面有没有元素。
【讨论】:
你可以检查它的 Count 属性是否等于 0。
【讨论】:
假设您的意思是Queue<T>,您可以使用:
if (queue.Count != 0)
但是为什么要麻烦呢?无论如何都要遍历它,如果它是空的,你将永远不会进入正文:
Queue<string> queue = new Queue<string>();
// It's fine to use foreach...
foreach (string x in queue)
{
// We just won't get in here...
}
【讨论】:
假设你的意思是System.Collections.Generic.Queue<T>
if(yourQueue.Count != 0) { /* Whatever */ }
应该可以解决问题。
【讨论】: