您能否告诉我,每次拨打Count
后,Queue
都会检查所有Queue
和计数,或者队列的属性为int
和每个添加/删除它增加/减少?
无论如何,有没有更好的方法来了解队列是否为空?
答案 0 :(得分:5)
请参阅MSDN docs(Google第一次点击“queue.count属性”):
检索此属性的值是O(1)操作。
答案 1 :(得分:2)
中的元素数量
Queue<T>
的容量是Queue<T>
可以存储的元素数。Count
是实际位于Queue<T>
。容量始终大于或等于
Count
。如果Count
在添加元素时超出容量,则在复制旧元素和添加新元素之前,通过自动重新分配内部数组来增加容量。检索此属性的值是O(1)操作。
答案 2 :(得分:-1)
了解队列是否为空的更好方法是使用IEnumerable
的{{3}}方法。
这样,您就不需要遍历整个集合,只需知道在使用Count方法时集合中是否至少有一个项目。
if(myQueue.Any())
{
// Do something.
}
如果Count
是一个属性,使用Count
vs Any
会有轻微的性能提升但是我认为程序员的意图通过{{1}得到更好的保留在许多情况下,特别是当检查的目的是查看是否存在任何项目时。