我有一个传递给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);
}发布于 2013-05-30 16:00:54
这是因为懒惰的评估。如果你尝试做一个ToList(),函数将会求值并命中断点--例如,试着这样做:
var bar = foo.Select(PlusTwo).ToList();发布于 2013-05-30 16:00:53
Enumerable是惰性计算的。
这意味着在开始迭代结果之前,不会调用您的函数。
如果添加以下内容:
for(var x in bar) ...然后,您的函数将被调用。
如果您想立即得到结果,请调用bar.ToArray()或bar.ToList()。这将在内部迭代可枚举数以创建结果,这将确保函数被调用。
发布于 2013-05-30 16:01:52
您正在使用LINQ,它已延迟执行。换句话说,它不会执行,直到您想要该操作的结果。因此,如果你必须对它执行foreach,那么它就会执行。
https://stackoverflow.com/questions/16830826
复制相似问题