Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表在打开前调试时不填充_C#_List_Debugging - Fatal编程技术网

C# 列表在打开前调试时不填充

C# 列表在打开前调试时不填充,c#,list,debugging,C#,List,Debugging,所有数据都在我们的C#web应用程序中,并以树格式进行结构。我们拥有的每个类都扩展了这个基类BaseObject,它本身有一个名为Children的BaseObject列表。我们定义了: public List<BaseObject>.Enumerator GetEnumerator() { return Children.GetEnumerator(); } 调试时,在代码的某些部分跳过此foreach循环,因为它表示“this”没有子项。如果我在循环之前放置一个断点,打

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

public List<BaseObject>.Enumerator GetEnumerator()
{
    return Children.GetEnumerator();
}
调试时,在代码的某些部分跳过此foreach循环,因为它表示“this”没有子项。如果我在循环之前放置一个断点,打开“this”并打开它的子循环列表,那么它将进入foreach循环


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

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

这是因为LINQ延迟了SQL执行


查看Charlie Calvert的这篇文章,了解有关LINQ和延迟执行的更多信息:

它们是否总是发生这种情况的代码的同一部分?与论坛网站不同,我们不使用“感谢”或“感谢任何帮助”或签名。请参阅“.您是否在某个地方使用Linq?可能是因为Linq操作的延迟行为,当您强制调试器显示结果时,调试器会处理Linq,然后显示正确的值。请尝试在foreach之前放置一个.ToList()。根据@Guilherme的说法,您是否尝试执行.ToList()几乎可以肯定,这就是问题所在。
foreach (var rule in this) {
    //do stuff
}