gpt4 book ai didi

c# - 谁能告诉我为什么它会发生在 LINQ 中?

转载 作者:行者123 更新时间:2023-11-30 20:54:37 24 4
gpt4 key购买 nike

我有以下代码:

List<int> nums = new List<int>();
nums.Add(1);
nums.Add(4);
nums.Add(2);
var lowNums = from n in nums
where n%2==0
select n;

Console.WriteLine("Even Numbers before adding 20 :");
foreach (var x in lowNums)
{
Console.WriteLine(x);
}

nums.Add(20);
Console.WriteLine("Even Numbers after adding 20:");
foreach (var x in lowNums)
{
Console.WriteLine(x);
}

在这里运行它时,它给了我这个输出:

enter image description here .

但是我想知道为什么会显示20,因为我加20后并没有运行LINQ表达式,我只是显示之前计算的结果。谁能解释一下?

最佳答案

您不是在运行 LINQ 表达式,而是在创建它。表达式在需要时执行,这通常称为延迟执行

进入该代码时,您可以看到 lowNums实际上是 System.Linq.Enumerable.WhereListIterator<int> 类型这是一个表达式,而不是结果。

通过遍历表达式,重新计算结果。如果要显式执行表达式并存储结果,请使用 .ToList()在表达上。

关于c# - 谁能告诉我为什么它会发生在 LINQ 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18995749/

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