首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >中断传递给LINQ-functions的函数

中断传递给LINQ-functions的函数
EN

Stack Overflow用户
提问于 2013-05-30 15:59:04
回答 3查看 113关注 0票数 3

我有一个传递给Select的函数。但是,当我在上述函数中设置断点时,程序不会中断。

示例:

代码语言:javascript
复制
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);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-30 16:00:54

这是因为懒惰的评估。如果你尝试做一个ToList(),函数将会求值并命中断点--例如,试着这样做:

代码语言:javascript
复制
var bar = foo.Select(PlusTwo).ToList();
票数 9
EN

Stack Overflow用户

发布于 2013-05-30 16:00:53

Enumerable是惰性计算的。

这意味着在开始迭代结果之前,不会调用您的函数。

如果添加以下内容:

代码语言:javascript
复制
for(var x in bar) ...

然后,您的函数将被调用。

如果您想立即得到结果,请调用bar.ToArray()bar.ToList()。这将在内部迭代可枚举数以创建结果,这将确保函数被调用。

票数 6
EN

Stack Overflow用户

发布于 2013-05-30 16:01:52

您正在使用LINQ,它已延迟执行。换句话说,它不会执行,直到您想要该操作的结果。因此,如果你必须对它执行foreach,那么它就会执行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16830826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档