为什么此对象在分配后为 null



完整的类在这里: https://gist.github.com/archer884/453c9937afa2dcb74f24

在我的班级(某种树)中,我有一个Node<T> _root;

在 Add 方法中,这个变量被分配给一个名为 Simply node 的局部变量,然后我们对 node 做了一些工作,包括在下面。

while (node != null)
{
    nodeDimensions = Dimensions(node.Item);
    if (dimensions.SequenceEqual(nodeDimensions))
        throw new ArgumentException("An element with the same key already exists in the tree.");
    dimension = depth % dimensions.Count;
    comparison = dimensions[dimension].CompareTo(nodeDimensions[dimension]);
    if (comparison <= 0)
    {
        node = node.LeftChild;
        continue;
    }
    else
    {
        node = node.RightChild;
        continue;
    }
}
node = new KdTreeNode<TItem>(item);

所以,对我来说,这看起来我只是从该变量中分配复活节彩蛋,但我的测试用例不同意:Assert.NotNull(tree.Root);总是失败。

编辑:对于未来的读者,我会注意到以下内容有效。

if (_root == null)
{
    _root = new KdTreeNode<TItem>(item);
    return;
}

这样_root当我们开始分配东西时,就不会引用 null。我认为。也许其他这些人中的一个会澄清。

在代码中的任何一点都没有实际分配给_root字段,因此tree.Root将始终null。 您需要将_root分配给以 Add 计算的值

相关内容

  • 没有找到相关文章