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上的实时演示
热门推荐
6 保研的祝福语简短
10 年轻20岁祝福语简短
11 朋友结婚祝福语信息简短
12 女孩婚礼贺卡祝福语简短
13 30段点歌简短祝福语
14 虎年春节祝福语图文简短
15 写给后妈祝福语大全简短
16 简短回复生日祝福语
17 校长送毕业祝福语简短
18 毕业立体贺卡祝福语简短