我试图解析一个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
我尝试过的事情:
Array.CreateInstance(type, length);
。也许这可以实现为递归方法?Type t = type.MakeArrayType(numOfDimensions);
将创建一个具有正确维度和类型的数组,而不是长度。问题:
有没有人知道如何以编程方式声明C#中指定类型,维数和长度的数组,或者是采取我所拥有的并尝试调整数组大小的最佳方法,但是我知道这对多维来说也很麻烦阵列。
答案 0 :(得分:3)
您可以使用Array.CreateInstance
的{{3}}重载:
Array.CreateInstance(type, sizeOfDimensions);
创建指定Type和dimension的多维数组 长度,基于零的索引。尺寸长度已指定 在32位整数数组中。