【发布时间】:2013-11-17 02:57:41
【问题描述】:
我正在将 C# 项目转换为 VB.net,并且需要了解 C# 的 Yield Break。我知道已经有关于 Stack Overflow 上的 Yield Break 的问题,但我觉得这些问题有点不同。
1.) 当您使用 Yield Break 时,包含它的函数是否会向调用者返回一个值?如果是这样,是 Null/Nothing,函数类型的默认值,还是其他什么?
2.) 当您 Yield Break 时,迭代器是否会重新开始。也就是说,下次调用Iterator时,会不会再次返回集合中的第一项?
3.) 与 Yield Break 最接近的 vb.net 是什么?退出函数?什么都不退?还有什么?
【问题讨论】:
-
yield break本质上通知迭代器没有更多的值。如果它是方法中命中的第一个项目,它将 like 返回一个空列表。方法本身仍然返回IEnumerable,但如果你尝试迭代它,它就像迭代一个空列表(也就是说,不会发生迭代)。如果您尝试重新迭代相同的IEnumerable结果,它将再次调用该方法。根据您的逻辑,这可能意味着它会以相同的方式命中yield break(因此就像一个空列表),或者这次您可能会让它产生值。无法对 VB 发表评论。 -
我猜是
Exit Function; MSDN suggestsExit FunctionandReturnboth work。 (参见技术实现)