将字节数组赋值给二维字节数组
本文关键字:字节数 数组 字节 二维 赋值 | 更新日期: 2023-09-27 18:12:12
我想把一个字节[]赋值给一个字节[][],但这会给我运行时错误:
对象引用未设置为对象的实例。
这是我的代码:
for (int i = 0; i < NumberOfChunks; i++)
{
byte[][] myFile = new byte[NumberOfChunks][];
myFile[i][0] = buffer[i]; // IT STOPS HERE AND GIVES ME THE ERROR
if ((i + 1) == NumberOfChunks)
{
do sth....
}
}
[][]是不同于[,]的数组。
所以分配第一个维度你会得到一个指向可能数组的空指针数组
试试这个:
byte[][] myFile = new byte[NumberOfChunks][];
for (int i = 0; i < NumberOfChunks; i++)
{
myFile[i] = new byte[NumberOfItems];
myFile[i][0] = buffer[i]; // IT STOPS HERE AND GIVES ME THE ERROR
if ((i + 1) == NumberOfChunks)
{
do sth....
}
}
myFile[i][0]
为null,因为您只分配了第一个维度。在循环开始时,数组看起来像这样:
myFile -> [null, null, null, ...]
你可以通过迭代数组来分配另一个维度:
byte[][] myFile = new byte[NumberOfChunks][];
for (int i = 0; i < NumberOfChunks; ++i)
{
myFile[i] = new byte[NumberOfChunks];
}
结果将是:
myFile -> [byte[], byte[], byte[] ...]
因此myFile[i]
将指向byte[]
中的一个而不是空引用。
作为旁注,您可以使用2d数组byte[,]
来同时分配两个维度。只是要注意,性能是不相等的。