C#-3D数组的3D数组

C#-3D数组的3D数组,c#,arrays,multidimensional-array,new-operator,C#,Arrays,Multidimensional Array,New Operator,我想要一个非常大的3D网格。如果我只是简单地创建一个3D数组(即T[,]),我最终会在网格中有很多未使用的(3D)位置,并且由于内存使用,网格将远远超出我需要的大小 所以我的想法是制作一个由亚三维网格(也称为块)组成的“空心”三维网格,其中每个位置包含一个子三维网格。对于空块,父三维网格中不存在该块的三维数组 所以我有一个类型的值:T[,][,],] 其中,包含块的“顶层”网格将是一个3D数组,其位置包含对块的引用,如果块为空,则为null 我的问题是:如何初始化T[,][,],]类型的值?例如

我想要一个非常大的3D网格。如果我只是简单地创建一个3D数组(即
T[,]
),我最终会在网格中有很多未使用的(3D)位置,并且由于内存使用,网格将远远超出我需要的大小

所以我的想法是制作一个由亚三维网格(也称为块)组成的“空心”三维网格,其中每个位置包含一个子三维网格。对于空块,父三维网格中不存在该块的三维数组

所以我有一个类型的值:
T[,][,],]

其中,包含块的“顶层”网格将是一个3D数组,其位置包含对块的引用,如果块为空,则为null

我的问题是:如何初始化
T[,][,],]
类型的值?例如,如果我执行
newt[3,3,3][3,3,3]
,编译器会大叫:

CS0178  Invalid rank specifier: expected ',' or ']'

谢谢。

创建新数组的语法如下:

T[,,][,,] a = new T[3,3,3][,,];
这将为您提供一个包含
null
值的3D数组。您可以根据需要将它们设置为非空三维阵列:

a[1,2,2] = new T[8,8,8];

你可以考虑其他方法来存储3D网格的“块”。例如,你可以用三元元组作为关键字和3D数组作为值。p> 创建新数组的语法如下所示:

T[,,][,,] a = new T[3,3,3][,,];
这将为您提供一个包含
null
值的3D数组。您可以根据需要将它们设置为非空三维阵列:

a[1,2,2] = new T[8,8,8];

你可以考虑其他方法来存储3D网格的“块”。例如,你可以用三元元组作为关键字和3D数组作为值。p> 谢谢,这就是我需要的语法。我会考虑字典法。谢谢,我需要的语法。我会考虑字典法。