C# 在foreach声明中调用方法
我有一个foreach,它调用一个方法来获取它的集合C# 在foreach声明中调用方法,c#,foreach,C#,Foreach,我有一个foreach,它调用一个方法来获取它的集合 foreach(var item in GetItemDetails(item)) { } VisualStudio对此没有抱怨,Resharper也没有抱怨,但是,在我继续使用这种方法之前,我想联系一下,看看这是否是一种推荐的方法 这没什么错。该方法将只评估一次 基本上是: using(var iter = GetItemDetails(item).GetEnumerator()) { while(iter.MoveNext
foreach(var item in GetItemDetails(item))
{
}
VisualStudio对此没有抱怨,Resharper也没有抱怨,但是,在我继续使用这种方法之前,我想联系一下,看看这是否是一种推荐的方法 这没什么错。该方法将只评估一次 基本上是:
using(var iter = GetItemDetails(item).GetEnumerator())
{
while(iter.MoveNext()
{
var item = iter.Current;
// ...
}
}
没什么问题 只有两个建议:
- 如果您真的想追求性能(甚至在C#中也可能发生这种情况),for循环通常是最快的,尽管可读性较差,代码也不太简洁: 信息:
ForEach
更可取的时间是分钟-尤其要记住,List
有一个自定义的struct
迭代器,这使得它非常高效。而refor
vsforeach
,这在很大程度上取决于场景,通常差别不大。大多数实际操作代码之间的差异非常小,您实际上只是在分析您的分析器。谢谢。也许是因为英语不是我的母语,但在你的第一句话里,有些东西我不确定。出于性能原因,只是为了可读性,我没有提到.ForEach()。如果同意for循环,那就是我提到“甚至在C#中也可能发生”的原因,但我已经遇到过这种优化被证明是有用的具体案例。