【发布时间】:2019-03-15 17:23:43
【问题描述】:
我正在尝试做一些概念上简单的事情,但由于某种原因我无法弄清楚。
我正在制作一个树形结构(在这种情况下是八叉树):
class Octree
{
public readonly Octree parent;
public Dictionary<Boolean[,,], Octree> children;
public readonly bool[,,] index;
}
布尔数组只能是[1,1,1],子字典只能包含8个键值对。
我可以让 8 个孩子很好,但我一辈子都无法弄清楚如何将布尔数组强制为 [1,1,1]
我环顾四周,找不到答案,这可能很简单,没有人问过,但我在兜圈子。
我尝试过制作“struct Index {bool x,y,z}”,但我不想一次指定一个。然后我尝试创建一个“类索引:布尔 [1,1,1]”,但您不能从密封的布尔类继承,并尝试将其限制为 [1,1,1],即使您可以。然后我尝试创建一个别名“使用 Index = System.Boolean[,,];”但这也不起作用。
我还想让“孩子”成为只读的。您应该无法更改它使用的字典或键。您应该只能设置一次键的值,但在创建子项之前您不会知道它们是什么。我不知道这是否可能。
感谢您提供的任何帮助,谢谢。
【问题讨论】:
-
“我这辈子都不知道如何将布尔数组强制为 [1,1,1]” 听起来像你'使用自定义数据结构会更好吗?
-
我不明白你想用一个一个一个的数组做什么。这不只是一个
bool值吗?还是我误解了[1,1,1]的意思? -
您的问题是您无意中创建了一个三维数组,并且您似乎想要一个 3
bools 的一维数组。但要为您提供解决方案,我们需要更好地了解您的使用情况。不是使用true或false,而是引用1作为值。您还将它称为一个永不改变的常量,这导致了为什么您会有一个只有一个键的字典。你能更好地解释一下你的情况吗 -
我同意第一条评论。这个问题虽然令人困惑,但听起来很像XY Problem。
-
要有 8 个坐标,你的声明应该是 [2,2,2],正如其他人指出的 [1,1,1] 只给出 1 个元素
标签: c# arrays dictionary tree boolean