c# - yield 返回与返回选择

标签 c# .net linq select yield

这两种方法的优点/缺点是什么?

return items.Select(item => DoSomething(item));

对比

foreach(var item in items)
{
    yield return DoSomething(item);
}

编辑 由于它们大致等同于 MSIL,您认为哪个更具可读性?

最佳答案

yield return 技术导致 C# 编译器“在幕后”生成一个枚举器类,而 Select 调用使用一个标准的枚举器类,该枚举器参数化了一个委托(delegate)。在实践中,除了在 Select 情况下为委托(delegate)可能有一个额外的调用框架外,两者之间应该没有太大区别。

就其值(value)而言,用 lambda 包裹 DoSomething 也有点毫无意义;直接为它传递一个委托(delegate)。

关于c# - yield 返回与返回选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1479268/

相关文章:

c# - 使用 Linq 读取 CSV

c# - 循环 A 列表的十进制列表

c# - 适用于 ASP.NET c# 的谷歌地图

c# - Xtragrid 在删除过滤器时是否会触发任何事件?

c# - 当复选框控件的 Visible 变为 true 时,comctl32.dll 使用过多的内存

c# - Linq 如何计算行数?

c# - C#比较两个字符串

c# - 远程服务器返回错误 : 227 Entering Passive Mode (500 oops vs_utility_recv_peek: no data)

c# - 在 LINQ 中将 datetime2 转换为字符串 ("dd/MM/yyyy")

.net - 2009 年 6 月的 WPF 工具包在将发送给客户的应用程序中使用是否安全?