将 Object[,] 数组中的值复制到 Object[][] 数组中

3

我有两个数组:

  • object[,] 数组
  • object[][] 数组。

我想将object[,]数组中的值复制到object[][]数组中。

我尝试了如下代码:

object[,] array1 = new object[arraySize, 4]; //Here are some values inside
object[][] array2 = new object[arraySize][];


for (int i = 0; i < arraySize; i++)
{
    array2[i][0] = array1[i, 0];
    array2[i][1] = array1[i, 1];
    array2[i][2] = array1[i, 2];
    array2[i][3] = array1[i, 3];
    
}

但是我收到了一个 NullReferenceException 异常:

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


你把作业的方向搞错了。 - Mo B.
你为什么要使用 arrayCounter2 而不是只用 i 呢? - Mo B.
我已经编辑过了,谢谢。 - tzumd
2个回答

1

试试这个:

for (int i = 0; i < array1.GetLength(0); i++)
{
    array2[i] = new object[array1.GetLength(1)]; // array2[i] is null initially
    for(int j = 0; j < array1.GetLength(1); j++) {           
        array2[i][j] = array1[i, j];
    }
}

在这里尝试一下: https://dotnetfiddle.net/f1XUXI


1
谢谢,但是我得到了相同的异常:NullReferenceException:对象引用未设置为对象的实例。 - tzumd
1
我添加了一个小例子,这样你就可以看到它的实际效果。 - Mo B.

1
array2[i][0] = array1[i, 0];

在这里,您遇到了空引用异常,因为array2[i]为空。您需要在使用之前初始化array2的每个元素。
嵌套数组是数组的数组,因此其元素是引用类型,并且初始化为null。 Microsoft文档
// In your code, `arraySize` correspond to the numbers of rows in a multidimensional array. 
// In this example, rows = 2, columns = 4.
object[,] array1 = new object[2, 4] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } };
object[][] array2 = new object[2][] { new object[4], new object[4] };

for (int x = 0; x < 2; x++)
{
    for (int y = 0; y < 4; y++)
    {
        array2[x][y] = array1[x, y];
    }
}

// print array2
for (int i = 0; i < array2.Length; i++)
{
    Console.WriteLine(string.Join(",", array2[i]));
}

Console.ReadLine();
       

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接