gpt4 book ai didi

c# - 为什么修改列表会影响过滤的列表?

转载 作者:太空宇宙 更新时间:2023-11-03 17:40:51 25 4
gpt4 key购买 nike

考虑以下示例:

List<String> myList = new List<string>();

myList.Add("Ford");
myList.Add("Porsche");

var filteredList = myList.Where(a => a.StartsWith("F"));

myList.Add("Ferrari");

foreach (string s in filteredList)
{
Console.WriteLine(s);
}


输出为:

Ford  
Ferrari


当我创建过滤列表时,该列表仅包含:

Ford


为什么修改原始列表会影响过滤的列表?

最佳答案

LINQ被懒惰地评估。这意味着filteredList在创建时不包含Ford。它包含的全部内容是对myList和您提供的lambda的引用。在实际使用foreach评估列表时,才进行过滤。由于列表现在包含Ferrari,因此也会返回该列表。

如果要强制进行更早的评估,可以使用ToList()

var filteredList = myList.Where(a => a.StartsWith("F")).ToList();


这意味着评估将在当时和那里(而不是再次)进行。

关于c# - 为什么修改列表会影响过滤的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23960095/

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