Queue.Count - 它是如何工作的?

时间:2012-09-16 13:10:10

标签: c# queue

您能否告诉我,每次拨打Count后,Queue都会检查所有Queue和计数,或者队列的属性为int和每个添加/删除它增加/减少?

无论如何,有没有更好的方法来了解队列是否为空?

3 个答案:

答案 0 :(得分:5)

请参阅MSDN docs(Google第一次点击“queue.count属性”):

  

检索此属性的值是O(1)操作。

答案 1 :(得分:2)

  

Queue<T>的容量是Queue<T>可以存储的元素数。 Count是实际位于Queue<T>

中的元素数量      

容量始终大于或等于Count。如果Count在添加元素时超出容量,则在复制旧元素和添加新元素之前,通过自动重新分配内部数组来增加容量。

     

检索此属性的值是O(1)操作。

取自来源Queue<T>.Count Property on MSDN

答案 2 :(得分:-1)

了解队列是否为空的更好方法是使用IEnumerable的{​​{3}}方法。

这样,您就不需要遍历整个集合,只需知道在使用Count方法时集合中是否至少有一个项目。

if(myQueue.Any())
{
 // Do something.
}

如果Count是一个属性,使用Count vs Any会有轻微的性能提升但是我认为程序员的意图通过{{1}得到更好的保留在许多情况下,特别是当检查的目的是查看是否存在任何项目时。