尝试在列表<t> </t>中展开项时调试停止

时间:2013-04-01 07:21:48

标签: c# list generics visual-studio-debugging

出于某种原因,当我尝试展开_nodeDependencies列表中IEnumerable<Node<T>>的每个项目时,它会显示有13个项目,但是当我开始展开它们时,它表示无法显示我点击内容,并且在我点击很多+以展开列表中的项目之后,调试器就会失败了。我不知道这是Generics在运行时的工作原理还是什么。

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个项目,所以我展开列表然后尝试展开一个项目或两个项目,它对我不利并停止调试

enter image description here

1 个答案:

答案 0 :(得分:2)

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

您可以尝试创建一些变通方法 - 在Watch窗口中增强您实际观察的内容,以便向下钻取。

换句话说,代替(或除了)_nodeDependencies上的手表,尝试在_nodeDependencies[0]上创建一个手表,看看会出现什么。继续此向下钻取过程,直到到达您实际想要检查的图层。

这可能有用的原因(特别是在挖掘IQueryable数据库结果或在Web上下文中运行时)是因为它花费了很多时间 使用IDE点击一系列结果所需的自动向下钻取 - 因此,您可以更好地在发生任何超时之前查看所需内容。