gpt4 book ai didi

c# - 在 ForEach 函数中模拟 break 语句

转载 作者:行者123 更新时间:2023-11-30 16:34:43 25 4
gpt4 key购买 nike

这更像是一个假设性问题,因为我越来越多地使用 .NET 3.5 以及 lambda 表达式和匿名委托(delegate)。以这个简单的例子为例:

static void Main(string[] args)
{
List<int> numList = new List<int>(int[] { 1, 3, 5, 7, 9, 11, 12, 13, 15 });

numList.ForEach(i =>
{
if (i % 2 == 1)
Console.Write(i);
else
return;
});

Console.ReadLine();
}

这将产生输出:

13579111315

当然,我真正希望它做的是在 12 之后停止执行 ForEach 函数,而不是打印 13 或 15。在传统的 foreach 结构中,你会休息一下(而不是我的 return例),循环结束。但是,在这种情况下中断是非法的。您收到以下消息:

No enclosing loop out of which to break or continue

是否有我可以在这里轻松使用的结构来获得所需的结果,或者如果您不打算在名单?

最佳答案

只需使用标准 foreach环形。与使用 lambda 表达式相比,这几乎总是更简单且更容易混淆 - 您不会对捕获的变量等感到困惑。

您不妨阅读Eric Lippert's post on this as well .

List<T>.ForEach如果您已获得委托(delegate)并且只想在列表中的每个元素上执行它,这很有用 - 但否则我会坚持使用正常的语言功能。

关于c# - 在 ForEach 函数中模拟 break 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2358702/

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