全班:https://gist.github.com/archer884/453c9937afa2dcb74f24
在我的班级(某种树)中,我有一个Node<T> _root;
在Add方法中,此变量被分配给一个名为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。我认为。也许其中一个人会澄清。
答案 0 :(得分:0)
代码中的任何一点都不是实际分配给_root
的{{1}}字段,因此tree.Root
始终为null
。您需要将_root
分配给Add