我有这个代码
List<int> items = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
//calculation is not being executed until "even" is used
IEnumerable<int> even = items.Where(x => x % 2 == 0);
DoStuff1(even);
DoStuff2(even);
DoStuff3(even);
当您使用 IEnumerable 时,您给编译器一个将工作推迟到以后的机会,可能会在此过程中进行优化。如果您使用 ToList(),您会强制编译器立即具体化结果。
现在这个计算(在我的例子中x % 2 == 0)是为每次调用执行DoStuff()还是以某种方式保存在内存中?
DIEA
炎炎设计
吃鸡游戏
相关分类