我有一个foreach,它调用一个方法来获取它的集合。
foreach(var item in GetItemDetails(item))
{
}
Visual Studio并没有抱怨这一点,Resharper也没有,在我继续使用这种方法之前,我想伸出手来检查它是否是推荐的方法。
答案 0 :(得分:11)
这没什么不对。该方法只会被评估一次。
基本上是:
using(var iter = GetItemDetails(item).GetEnumerator())
{
while(iter.MoveNext()
{
var item = iter.Current;
// ...
}
}
答案 1 :(得分:1)
它没有任何问题。
只有两个建议:
如果您将在循环中放入的内容可以作为单个项目的方法编写,这将使其可重复使用,我还会考虑List.ForEach(...);
方法。
信息:http://msdn.microsoft.com/en-us/library/bwabdf9z%28v=vs.110%29.aspx
如果您真的在性能之后(即使在C#中也可能发生),for循环通常是最快的,尽管可读性较差,因为不那么简洁的代码: 信息:In .NET, which loop runs faster, 'for' or 'foreach'?