这两种方法的优点/缺点是什么?
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/