c#中foreach和delegate循环之间的区别是什么

时间:2011-02-25 09:57:04

标签: c# .net

我在这里读过http://bytes.com/topic/c-sharp/answers/447223-foreach-list-foreach,有人告诉委托循环的性能低于foreach命令。

我想知道两者之间有什么区别。为什么foreach更好,在这种情况下我们只需要使用委托循环。

有没有人比较过这两件事。

3 个答案:

答案 0 :(得分:1)

您可以实现这两个解决方案,然后在IL中进行比较。

然后你会知道有一些显着的差异。

关于性能编写两个应用程序,一些时间诊断创建一个包含1mln条目的循环并执行。然后在最后比较执行时间。

编辑:

差异可能在于使用,使用委托可以通过uknow方法对示例字符串列表执行操作

delegate StringListOperator(string s)

public operate(StringListOperator operator) {
   String.ForEach(operator);
}

我不是100%肯定语法,但我希望你明白这一点。

如果您只打算在某些方法中迭代列表,请使用简单的foreach,这对我来说只是一种语法糖。

答案 1 :(得分:0)

看看该链接:http://www.eggheadcafe.com/software/aspnet/33593372/delegate-vs-foreach-loop.aspx 问题是你的问题,在评论中有很好的答案。

答案 2 :(得分:0)

性能通常不会成为问题,但是在使用委托与foreach循环时必须小心状态捕获。基本上,编译器会将循环内使用的非常量变量复制到嵌套的字段集中。这有时可能会产生不良影响