热切的评价

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();

调用 ToListToDictionaryToArray 将强制立即评估枚举,将所有元素检索到集合中。