41

在 C# 中,如何检查队列是否为空?

我想遍历队列的元素,我需要知道什么时候停止。我怎样才能做到这一点?

4

8 回答 8

55

假设你的意思是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...
}
于 2011-11-01T15:18:57.383 回答
24

我建议使用 Any() 方法,因为这不会对整个队列进行计数,这在性能方面会更好。

Queue myQueue = new Queue();
    if(myQueue.Any()){
      //queue not empty
    }
于 2013-04-03T16:04:33.253 回答
9

假设你的意思System.Collections.Generic.Queue<T>

if(yourQueue.Count != 0) { /* Whatever */ }

应该做的伎俩。

于 2011-11-01T15:18:42.030 回答
3
    Queue test = new Queue();
    if(test.Count > 0){
      //queue not empty
    }
于 2011-11-01T15:19:51.623 回答
2

有一个可用的扩展方法 .Count(),因为 Queue 实现了 IEnumerable。

您还可以执行 _queue.Any() 以查看其中是否有任何元素。

于 2011-11-01T15:19:38.477 回答
1

您可以检查其 Count 属性是否等于 0。

于 2011-11-01T15:19:09.240 回答
0

YourQueue.GetEnumerator().MoveNext() == true

于 2020-01-08T15:02:42.550 回答
0

TryPeek()将让您检查 Queue 是否有元素。

Queue q = new Queue();
if (!q.TryPeek(out object i)) {
    /* Queue is empty */
    ....
}
于 2021-08-10T11:30:35.067 回答