我偶然发现了这段代码:
public IEnumerable<object> Process()
{
foreach (var item in items)
{
if (item.Created < DateTime.Now)
{
yield return item;
continue;
}
}
}
有人可以帮助我理解为什么continue
在这种情况下不是不必要的(VS不会将continue
标记为冗余控制流跳转语句)?
答案 0 :(得分:9)
slider_control
将返回一个项目作为枚举器的一部分。一旦调用方法请求下一个项目,代码将在yield return
之后的行上重新启动。
在这种特殊情况下,yield return
是多余的,因为无论如何,循环在该点之后将不再进行任何工作。但作为一般应用,它有很多用途。