【问题标题】:Why is continue placed after yield return?为什么收益率返回后继续放置?
【发布时间】:2017-06-01 04:52:16
【问题描述】:

我偶然发现了这段代码:

public IEnumerable<object> Process()
{
    foreach (var item in items)
    {

        if (item.Created < DateTime.Now)
        {   
            yield return item;
            continue;
        }
    }
}

有人可以帮我理解为什么continue 在这种情况下是不必要的(VS 没有将continue 标记为冗余控制流跳转语句)?

【问题讨论】:

  • VS 并没有做很多事情。我怀疑在安装了 JetBrains Resharper 的情况下运行 VS 会指出它的冗余
  • 确实 VS 不够聪明,无法找到这个问题,但是 ReSharper 遇到了问题(在 VS2010 和 R# 2016 上测试)
  • 可能是由 C# 中 yield 关键字的新手编写的。或者有人试图展示如何不做事。
  • 为什么continue 在这种情况下是不必要的。我们不能。它没用的。

标签: c# return yield continue


【解决方案1】:

yield return 将返回一个项目作为枚举器的一部分。一旦调用方法请求下一项,代码会在yield return之后的那一行重新启动。

在这种特殊情况下,continue 是多余的,因为在此之后循环将不再进行任何工作。但作为一个通用应用,它有很多用途。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 2013-05-31
    • 2010-12-21
    • 2020-07-09
    • 2013-04-07
    • 2011-04-20
    • 1970-01-01
    相关资源
    最近更新 更多