热切的评价
yield
关键字允许对集合进行延迟评估。将整个集合强制加载到内存中称为急切评估。
以下代码显示了这一点:
IEnumerable<int> myMethod()
{
for(int i=0; i <= 8675309; i++)
{
yield return i;
}
}
...
// define the iterator
var it = myMethod.Take(3);
// force its immediate evaluation
// list will contain 0, 1, 2
var list = it.ToList();
调用 ToList
,ToDictionary
或 ToArray
将强制立即评估枚举,将所有元素检索到集合中。