gpt4 book ai didi

c# - 是否在 foreach 中使用 LINQ 语句重新评估每次迭代的语句

转载 作者:太空宇宙 更新时间:2023-11-03 23:33:08 24 4
gpt4 key购买 nike

所以我想知道的是,在我的 foreach 循环中使用 LINQ where 子句是否意味着在每次迭代时它都会重新评估我的 LINQ where 子句。例如:

var MyId = 1;
foreach (var thing in ListOfThings.Where(x => x.ID == MyId))
{
//do Something
}

还是这样写更好:

var MyId = 1;

var myList = ListOfThings.Where(x => x.ID == MyId);
foreach (var thing in myList)
{
//do Something
}

还是它们的工作方式完全相同?

最佳答案

foreach (var thing in myExpression) 调用 myExpression.GetEnumeratorMoveNext 直到它返回 false。所以你的两个片段是一样的。

(顺便说一下,GetEnumeratorIEnumerable 上的一个方法,但是myExpression 不一定是IEnumerable; 只是一个带有 GetEnumerator 方法的东西)。

关于c# - 是否在 foreach 中使用 LINQ 语句重新评估每次迭代的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31457948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com