是否可以将Thread.Sleep()放在一个List <t> ForEach中?

时间:2016-01-07 14:59:54

标签: c# linq

是否可以在单个语句中重写以下代码?

foreach(var myVar in varEnumerable)
{
    MyMethod(myVar);
    Thread.Sleep(2000);
}

如果没有Thread.Sleep(),我会把它写成:

varEnumerable.ToList().ForEach(x => MyMethod(x));

2 个答案:

答案 0 :(得分:11)

是的,你只需要一些花括号(和空白以获得良好的衡量标准):

varEnumerable.ToList().ForEach(x => {
    MyMethod(x);
    Thread.Sleep(2000);
});

编辑:在问题的评论中已经注意到,这比普通的foreach(由于ToList()调用)效率低,并且当你添加大括号和空格时并不看起来更清洁,所以它并不是一个很大的胜利。所以这就是你如何做你所要求的,但它可能不是你应该做的:)

答案 1 :(得分:3)

怎么样:

varEnumerable.ToList().ForEach(x => {MyMethod(x);Thread.Sleep(2000);});

您可以使用荣誉({})和分号(;)对多个命令进行分组。

请注意,您可以在此类环境中使用任何类型的说明for循环,说明,...)