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

    链接地址: http://www.djcxy.com/p/9213.html

    上一篇: Does Yield Break return a value?

    下一篇: WCF vs ASP.NET Web API