Yield Break是否会返回一个值?
我正在将一个C#项目转换为VB.net,并且需要了解C#的Yield Break。 我知道已经有关于堆栈溢出Yield Break的问题,但我觉得这些问题有点不同。
1.)当你发生收益中断时,包含它的函数返回一个值给调用者? 如果是这样,它是空/无,该函数的类型的默认值,或其他?
2.)当您发生中断时,迭代器重新开始。 换句话说,下一次调用Iterator时,它会再次返回集合中的第一个项目吗?
3.)什么是最接近的vb.net相当于Yield Break? 退出功能? 没有返回? 别的东西?
当你发生Break Break时,包含它的函数将返回一个值给调用者? 如果是这样,它是空/无,该函数的类型的默认值,或其他?
不,它不会返回一个值。 它只是结束枚举。 你可以说,它将IEnumerator.MoveNext()
返回值设置为false
,就是这样。
当您发生中断时,迭代器重新开始。 换句话说,下一次调用Iterator时,它会再次返回集合中的第一个项目吗?
这一切都取决于你的方法如何编写,但是当你调用使用yield
的方法时,你正在创建状态机的新实例,所以它可以再次返回相同的值。
等于Yield Break的最接近的vb.net是多少? 退出功能? 没有返回? 别的东西?
您可以使用Exit Function或Return语句来结束迭代。
来自Yield Statement(Visual Basic)
yield break;
不会产生一个项作为一部分IEnumerable<T>
返回值。
例如,以下给出一个空的枚举:
IEnumerable<int> F()
{
yield break;
}
这意味着F().Count()
是0。
当你发生Break Break时,包含它的函数将返回一个值给调用者? 如果是这样,它是空/无,该函数的类型的默认值,或其他?
不,它会阻止这一代。 yield break;
没有产生任何价值yield break;
。 如果你认为迭代器是一个带有回调的循环,那就好像break
了循环。
当您发生中断时,迭代器重新开始。 换句话说,下一次调用Iterator时,它会再次返回集合中的第一个项目吗?
是的,它再次被调用,它产生一个新的迭代器。
等于Yield Break的最接近的vb.net是多少? 退出功能? 没有返回? 别的东西?
Exit Function
。