gpt4 book ai didi

c# - 列表在调试时不填充,直到打开

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

我们的 C# Web 应用程序中的所有数据都以树格式构建。我们拥有的每个类都扩展了这个基类 BaseObject,它本身有一个名为 Children 的 BaseObjects 列表。我们定义了:

public List<BaseObject>.Enumerator GetEnumerator()
{
return Children.GetEnumerator();
}

所以在我们代码的很多地方,我们用类似的东西搜索树:

foreach (var rule in this) {
//do stuff
}

调试时,代码的某些部分会跳过此 foreach 循环,因为它表示“this”没有子项。如果我在循环之前放置一个断点并打开“this”并打开它的子​​项列表,那么并且只有到那时它才会进入 foreach 循环。

有人知道为什么会发生这种情况吗?这让我发疯。

最佳答案

在遍历列表之前,您需要通过在枚举上调用 ToList() 来强制将数据拉入内存,正如@Guilherme 在评论中提到的那样。

这是因为 LINQ 延迟了 SQL 的执行。

查看 Charlie Calvert 撰写的这篇文章,了解有关 LINQ 和延迟执行的更多信息:http://blogs.msdn.com/b/charlie/archive/2007/12/09/deferred-execution.aspx

关于c# - 列表在调试时不填充,直到打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21541946/

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