如何打破一个功能并在那一点重新加入

时间:2015-12-05 17:47:39

标签: c#

我记得在某些时候学习你在一个点退出一个函数,然后再次调用该函数以在你离开的那一点重新加入。你有什么方法可以在c#中做到这一点吗?

感谢

blueblob0

1 个答案:

答案 0 :(得分:2)

从语义上讲,我相信你会问yield

例如:

IEnumerable<int> Squares()
{
    for (var i = 1; i < Int32.MaxValue; i++)
    {
        yield return i * i; 
    }
}

// ... usage
Squares().Take(5); // Gets the first five squares, execution state of 
                   // of Squares() is kept in a state machine the 
                   // compiler creates for you behind the scenes. 
Sqaures().Take(5); // Gets the next five squares.