foreach循环里面一个foreach:哪个循环更高效/最好 - 的foreach或while循环
var list1 = new List<int>() {0,1,2,3,4,5,6,7,8,9};
var list2 = new List<int>() {9,8,7,6,5,4,3,2,1,0};
foreach (var list1Value in list1)
{
foreach (var list2Value in list2)
{
if (list1Value == list2Value)
// do something
}
}
或IEnumerable的foreach循环内
var list1 = new List<int>() {0,1,2,3,4,5,6,7,8,9};
var list2 = new List<int>() {9,8,7,6,5,4,3,2,1,0}
var enumerator = (System.Collections.IEnumerator)list2.GetEnumerator();
foreach (var list1Value in list1)
{
enumerator.Reset();
while (enumerator.MoveNext())
{
if (list1Value == (int)enumerator.Current)
// Do something
}
}
我更喜欢第一的可读性,但认为第二个更有效率。请注意,代码只是一个示例,并不代表我实际运行的代码。
这是个人偏好,因此我怀疑这会关闭。我个人发现第一个更具可读性。无需过分复杂的解决方案。 – Arran
你打算为“做些什么”做什么? – shahkalpesh
foreach在foreach中,编译器是否在第一个foreach循环的每次迭代中为第二个foreach创建一个新的枚举器? –