【发布时间】:2015-12-21 18:51:09
【问题描述】:
我真的很惊讶这个问题并没有真正的答案。
例如,我有一个 foreach 循环遍历队列(我使用的是 .Net 版本)foreach 中的队列到底发生了什么?
它是否像标准枚举器一样简单地迭代?或者它是否使用Dequeue() 功能。
为了清楚起见:
Queue<int> q = new Queue<int>();
foreach(int i in q)
{
// what happens in this loop?
}
【问题讨论】:
-
The documentation for Queue.GetEnumerator() 声明“枚举器可用于读取集合中的数据,但不能用于修改基础集合。” (这适用于大多数类,但不是全部!它肯定适用于队列。)
-
只需查看MSDN reference of Queue,您就会发现它实现了IEnumerable,因此它可以在
foreach(使用枚举器)中使用 -
@MatthewWatson 你的评论听起来像是对我的回答
-
@MatthewWatson 但是为什么它像数组一样使用枚举器呢?为什么不单独实施?