这更像是一个假设性的问题,因为我越来越多地使用.NET 3.5以及lambda表达式和匿名委托。举个简单的例子:
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结构中,你会有一个休息(而不是我的回归)例子),循环结束。但是,在这种情况下,休息是非法的。您收到以下消息:
没有封闭的循环可以打破或继续
是否有一个我可以轻松使用的构造来获得所需的结果,或者如果您不打算在每个单独的成员上实际运行所需的代码,那么在这种情况下使用标准的foreach循环会更好吗?列出?
答案 0 :(得分:3)
只需使用标准foreach
循环即可。这几乎总是比使用lambda表达式更简单,更容易混淆 - 你不会对捕获的变量等产生混淆。
您可能希望阅读Eric Lippert's post on this as well。
List<T>.ForEach
非常有用,如果你已经交给一个委托而你只想在列表中的每个元素上执行它 - 但是否则我会坚持使用正常的语言功能。