C#提前终止
示例
您可以yield通过传入一个或多个可以在函数中定义终止条件的值或元素来扩展现有方法的功能,方法是调用ayieldbreak停止执行内部循环。
public static IEnumerable<int> CountUntilAny(int start, HashSet<int> earlyTerminationSet)
{
int curr = start;
while (true)
{
if (earlyTerminationSet.Contains(curr))
{
//我们已经达到了最终价值之一
yield break;
}
yield return curr;
if (curr == Int32.MaxValue)
{
//如果我们一直走到最后,请不要溢出;停下来
yield break;
}
curr++;
}
}上述方法将从给定start位置进行迭代,直到earlyTerminationSet遇到内的一个值。
//从起点进行迭代,直到遇到定义为
//终止元素
var terminatingElements = new HashSet<int>{ 7, 9, 11 };
//这将从1开始迭代,直到遇到一个终止元素(7)
foreach(var x in CountUntilAny(1,terminatingElements))
{
//这将写出从1到7的结果(这将触发终止)
Console.WriteLine(x);
}输出:
1
2
3
4
5
6
.NETFiddle上的实时演示
热门推荐
10 祝女儿简短祝福语大全
11 大学新年祝福语简短创意
12 元旦适合的祝福语简短
13 朋友出远门祝福语简短
14 初六简短的祝福语
15 祝男孩生日祝福语简短
16 同事调离的祝福语简短
17 拜年红包的祝福语简短
18 妈妈生日祝福语简短励志