我正在使用foreach循环迭代一个集合,并且想知道当这段代码被.NET运行时执行时会发生什么。
foreach (object obj in myDict.Values) {
//... do something
}
myDict.Values在每次循环中都会被调用吗?还是只会调用一次?
谢谢。
只需要一次。大致相当于:
using (IEnumerator<Foo> iterator = myDict.Values.GetEnumerator())
{
while (iterator.MoveNext())
{
object obj = iterator.Current;
// Body
}
}
简短回答:它只被调用一次。
该方法只会被调用一次,如果集合被修改将会生成异常。