以编程方式创建已知尺寸,类型和长度的数组

时间:2017-12-03 16:03:40

标签: c# .net arrays

我试图解析一个IDX文件(用于存储几种不同类型的多维数据)。我已成功解码标题,告诉您数据的类型(无符号字节,有符号字节,短,整数,浮点数或双精度),维数和这些维的大小。但是,有了这些信息,我无法想到或找到一种以编程方式声明具有上述参数的数组的方法。

示例:

Type type = getDataType(magicBytes);
int numOfDimensions = getNumberOfDimensions(magicBytes);
int[] sizeOfDimensions = getSizeOfDimensions(numOfDimensions, inputStream, data);
//Declare an array of type with numOfDimensions dimensions and sizes of sizeOfDimensions 

我尝试过的事情:

  • 声明指定长度的一维数组并键入您 可以使用我从here获得的Array.CreateInstance(type, length);。也许这可以实现为递归方法?
  • 我也认为this很有用,但它不会让你设置。{ 每个维度的长度。但是,此Type t = type.MakeArrayType(numOfDimensions);将创建一个具有正确维度和类型的数组,而不是长度。

问题:

有没有人知道如何以编程方式声明C#中指定类型,维数和长度的数组,或者是采取我所拥有的并尝试调整数组大小的最佳方法,但是我知道这对多维来说也很麻烦阵列。

1 个答案:

答案 0 :(得分:3)

您可以使用Array.CreateInstance的{​​{3}}重载:

Array.CreateInstance(type, sizeOfDimensions);
  

创建指定Type和dimension的多维数组   长度,基于零的索引。尺寸长度已指定   在32位整数数组中。