Phi*_*ppe 3 c# first-class-functions visual-studio-debugging
我有一个传递给的函数Select.但是当我在所述函数中放置断点时,程序不会中断.
例:
public static int PlusTwo(int x)
{
return x + 2;
}
public static void Main(string[] args)
{
var foo = new[] { 2, 3, 5, 7 };
var bar = foo.Select(PlusTwo);
}
Run Code Online (Sandbox Code Playgroud)
那是因为懒惰的评价.如果您尝试执行a ToList(),该函数将进行评估并且将触发断点 - 即尝试执行:
var bar = foo.Select(PlusTwo).ToList();
Run Code Online (Sandbox Code Playgroud)
Enumerables是惰性评估的.
这意味着在您开始迭代结果之前,不会调用您的函数.
如果你添加:
for(var x in bar) ...
Run Code Online (Sandbox Code Playgroud)
然后你的函数将被调用.
如果您想立即获得结果,请致电bar.ToArray()或bar.ToList().这将在内部迭代枚举以创建结果,这将确保调用该函数.
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |