如何检查队列是否为空?

本文关键字:是否 队列 何检查 检查 | 更新日期: 2023-09-27 18:13:27

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

我想遍历Queue的元素,我需要知道何时停止。我怎样才能做到这一点呢?

如何检查队列是否为空?

假设您指的是Queue<T>,那么可以直接使用:

if (queue.Count != 0)

但是为什么要麻烦呢?只要迭代它,如果它是空的,你就永远不会进入body:

Queue<string> queue = new Queue<string>();
// It's fine to use foreach...
foreach (string x in queue)
{
    // We just won't get in here...
}

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

Queue myQueue = new Queue();
    if(myQueue.Any()){
      //queue not empty
    }

假设你指的是System.Collections.Generic.Queue<T>

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

    Queue test = new Queue();
    if(test.Count > 0){
      //queue not empty
    }

由于Queue实现了IEnumerable,所以有一个扩展方法。count()可用。

您也可以执行_queue.Any()来查看其中是否有元素

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

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

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

Queue q = new Queue();
if (!q.TryPeek(out object i)) {
    /* Queue is empty */
    ....
}