注意:我定义了一个“Jagged Multidimensional”'特别是jmArray[][,]
。
我试图围绕使用这种类型的数组,以便保存简单的坐标,一对整数。这个数组将用于创建一个3x3网格,所以在我脑海里,我看到了:
jmArray[N][X,Y]
其中N是网格切片的编号,X,Y是切片的坐标。所以:
jmArray[2][3,2]
意味着切片2位于坐标3,2。
我一直试图为每个切片分配值,但我已经卡在了某个地方...
jmArray[0][,] = new int[1,2] {{3,3}};
了解如何正确地做这件事有点帮助会很好。
答案 0 :(得分:1)
你可以这样做:
int[][,] jmArray = new int[3][,];
jmArray[0] = new int[1,2] {{3,3}};
答案 1 :(得分:1)
除非我误解你,否则更简单的方法是创建一个大小为3元组的字典。
var space = Dictionary<Tuple<int, int, int>, TPointValue>;
// Fill up space with some points
space[Tuple.Create(3,3,1)] = new TPointValue(42);
// Retrieve point from 3d space
TPointValue point3_3_1 = space[Tuple.Create(3,3,1)];
我承认,就目前的形式而言,与锯齿状阵列相比,这种方法使得平面或基线的检索变得麻烦且低效,尽管它确实使得点的分配和检索非常有效。
然而:如果您要将此数据结构包装在您自己的类中,提供访问平面/线等的方法,您可以非常轻松有效地计算获取任何集合所需的密钥预先分数,例如。平面/线/多边形内的那些,然后非常有效地访问这些点。
PS:请注意,某个点的值不一定是某种奇特的类型,例如TPointValue
,它可能只是string
或float
或您喜欢的任何内容。
答案 2 :(得分:1)
而不是复杂的数组,具有有意义名称的简单类可能会更好:
class Slice
{
int X = 0;
int Y = 0;
public Slice()
{
}
public Slice(int _X, int _Y)
{
X = _X;
Y = _Y;
}
}
Slice[] Slices = new Slice[9];
数组的索引将是切片的位置。