1

出于某种原因,当我尝试扩展_nodeDependencies列表中的每个项目时IEnumerable<Node<T>>,它显示有 13 个项目,但是当我开始扩展它们时,它说它无法向我显示内容,并且在我点击后调试器最终退出许多 + 以展开列表中的项目。我不知道这是泛型在运行时的工作方式还是什么。

public class Tree<T> where T : INode
{

    private readonly IEnumerable<T> _sourceDependencies;
    private IEnumerable<Node<T>> _nodeDependencies;
    public Node<T> RootNode { get; set; }
    public Dictionary<Node<T>, IList<Node<T>>> FlattenedMap { get; private set; }

    public Tree(T rootNode, IEnumerable<T> dependencies)
    {
        RootNode = new Node<T>(rootNode); 
        _sourceDependencies = dependencies;
    }

    public void BuildTree()
    {
        _nodeDependencies = ConvertDependenciesToNodes(_sourceDependencies);
        AddChildren();
    }

    private IEnumerable<Node<T>> ConvertDependenciesToNodes(IEnumerable<T> listToConvert)
    {
        IEnumerable<Node<T>> nodeList = listToConvert.Select(sourceNode => new Node<T>(sourceNode)).ToList();

        return nodeList;
    }
}

当我将鼠标悬停时,意义重大_nodeDependencies = ConvertDependenciesToNodes(_sourceDependencies);

_nodeDependencies说 13 项,所以我展开列表,然后尝试展开一项或两项,它对我保释并停止调试

在此处输入图像描述

4

1 回答 1

2

值得怀疑的是,这与泛型的使用有关。正如 Lanorkin 所提到的,这更有可能是超时的结果。

您可能会尝试创建一些解决方法 - 增强您在“监视”窗口中实际观察的内容,进行深入研究。

换句话说,不是(或除此之外)手表 on ,而是_nodeDependencies尝试在手表上创建手表_nodeDependencies[0],看看会发生什么。继续这个向下钻取过程,直到你到达你真正想要检查的层。

这可能有用的原因(尤其是在挖掘IQueryable数据库结果或在 Web 上下文中操作时)是系统自动向下钻取所需的时间比您单击所需的时间要少得多使用 IDE 的一系列结果 - 因此您有更好的机会在任何类型的超时发生之前查看您想要的内容。

于 2013-04-22T22:10:26.673 回答