C# 将字节数组分配给二维字节数组

C# 将字节数组分配给二维字节数组,c#,arrays,bytearray,variable-assignment,type-2-dimension,C#,Arrays,Bytearray,Variable Assignment,Type 2 Dimension,我想将一个字节[]分配给一个字节[],但它给出了运行时错误: 对象引用未设置为对象的实例 这是我的代码: 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) == NumberOfChun

我想将一个字节[]分配给一个字节[],但它给出了运行时错误:

对象引用未设置为对象的实例

这是我的代码:

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....
    }
}
for(int i=0;i
myFile[i][0]
为空,因为您只分配了第一个维度。在循环开始时,数组如下所示:

myFile->[null,null,null,…]

您可以通过迭代数组来分配其他维度:

byte[][] myFile = new byte[NumberOfChunks][];
for (int i = 0; i < NumberOfChunks; ++i)
{
    myFile[i] = new byte[NumberOfChunks];
}
byte[][]myFile=新字节[NumberOfChunks][];
for(int i=0;i
结果将是:

myFile->[字节[],字节[],字节[]…]

所以
myFile[i]
将指向
字节[]
中的一个,而不是空引用


作为旁注,您可以使用2d数组
字节[,]
,以便同时分配两个维度。请注意,性能并不相同。

myFile[i][0]
为空,因为您只分配了第一个维度。在循环开始时,数组如下所示:

myFile->[null,null,null,…]

您可以通过迭代数组来分配其他维度:

byte[][] myFile = new byte[NumberOfChunks][];
for (int i = 0; i < NumberOfChunks; ++i)
{
    myFile[i] = new byte[NumberOfChunks];
}
byte[][]myFile=新字节[NumberOfChunks][];
for(int i=0;i
结果将是:

myFile->[字节[],字节[],字节[]…]

所以
myFile[i]
将指向
字节[]
中的一个,而不是空引用


作为旁注,您可以使用2d数组
字节[,]
,以便同时分配两个维度。请注意,性能并不相同。

myFile[i][0]
为空,因为您只分配了第一个维度。在循环开始时,数组如下所示:

myFile->[null,null,null,…]

您可以通过迭代数组来分配其他维度:

byte[][] myFile = new byte[NumberOfChunks][];
for (int i = 0; i < NumberOfChunks; ++i)
{
    myFile[i] = new byte[NumberOfChunks];
}
byte[][]myFile=新字节[NumberOfChunks][];
for(int i=0;i
结果将是:

myFile->[字节[],字节[],字节[]…]

所以
myFile[i]
将指向
字节[]
中的一个,而不是空引用


作为旁注,您可以使用2d数组
字节[,]
,以便同时分配两个维度。请注意,性能并不相同。

myFile[i][0]
为空,因为您只分配了第一个维度。在循环开始时,数组如下所示:

myFile->[null,null,null,…]

您可以通过迭代数组来分配其他维度:

byte[][] myFile = new byte[NumberOfChunks][];
for (int i = 0; i < NumberOfChunks; ++i)
{
    myFile[i] = new byte[NumberOfChunks];
}
byte[][]myFile=新字节[NumberOfChunks][];
for(int i=0;i
结果将是:

myFile->[字节[],字节[],字节[]…]

所以
myFile[i]
将指向
字节[]
中的一个,而不是空引用


作为旁注,您可以使用2d数组
字节[,]
,以便同时分配两个维度。请注意,性能并不相同。

[]是一个数组数组,不同于[,]

所以,分配第一个维度时,您将得到可能数组的空指针数组

试试这个:

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....
    }
}
byte[][]myFile=新字节[NumberOfChunks][];
for(int i=0;i
[]]是一个数组数组,与[,]不同

所以,分配第一个维度时,您将得到可能数组的空指针数组

试试这个:

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....
    }
}
byte[][]myFile=新字节[NumberOfChunks][];
for(int i=0;i
[]]是一个数组数组,与[,]不同

所以,分配第一个维度时,您将得到可能数组的空指针数组

试试这个:

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....
    }
}
byte[][]myFile=新字节[NumberOfChunks][];
for(int i=0;i
[]]是一个数组数组,与[,]不同

所以,分配第一个维度时,您将得到可能数组的空指针数组

试试这个:

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....
    }
}
byte[][]myFile=新字节[NumberOfChunks][];
for(int i=0;i
这是一个开始,但OP误用了
i
——因此上面的代码仍然是错误的。[这不是你说的重点;只是说人们不应该盲目地复制上面的内容。]我建议使用三个索引变量:
iIn
逐步完成输入,
iItem
逐步完成一个输出行或块的元素,以及
iChunk
逐步完成块。详情留给读者。:)这是一个开始,但OP误用了
i
——因此上面的代码仍然是错误的。[不是你说的重点;只是说人们应该