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 祝福语驱散霉运的话简短