gpt4 book ai didi

c# - 循环后是否需要调用 `yield break`?

转载 作者:行者123 更新时间:2023-11-30 19:23:09 26 4
gpt4 key购买 nike

在我的代码中有这样的方法

public static IEnumerable<int> GetDiff(int start, int end)
{
while (start < end)
{
yield return start;
start++;
}
yield break; // do we need to call it explicitly?
}

因此,我感兴趣的测试用例是 GetDiff(1, 5)GetDiff(5, 1)。虽然很清楚在第一种情况下会发生什么,但不太清楚在没有 yield break; after loop

的情况下它是如何在第二种情况下完成的

最佳答案

不,这不是必需的。它会起作用:

public static IEnumerable<int> GetDiff(int start, int end)
{
while (start < end)
{
yield return start;
start++;
}
// yield break; - It is not necessary. It is like `return` which does not return a value.
}

在这种情况下,函数的执行将通过退出简单地结束。

但是你可以这样写:

public static IEnumerable<int> GetDiff(int start, int end)
{
while (true)
{
if (start >= end)
yield break;
yield return start;
start++;
}
Console.WriteLine("Finish"); // note that this line will not be executed
}

关于c# - 循环后是否需要调用 `yield break`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55662524/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com