C#实例化数组值

本文关键字:数组 实例化 | 更新日期: 2024-10-24 18:56:26

由于某些原因,这适用于

public void TestData(ref array[,]) 
{ 
    array[0, 0] = new DataType(); 
}

而这不起作用

public void TestData(ref array[][]) 
{ 
    array[0][0] = new DataType(); 
}

我已经找到了一种解决需要使用[][]数组的方法,但很高兴知道为什么它看起来不一样。我是否也需要在数组[0]级别实例化?

C#实例化数组值

type[,]是二维数组,而type[][]是一维数组的一维数组,有时称为锯齿状数组,因为数组的长度不一定相同。

你可以使用任何一种,这取决于什么是合理的。如果使用锯齿状数组,则必须实例化每个数组(外部数组和所有内部数组)。如果使用二维数组,只需实例化一次即可。

"我也需要在array[0]级别实例化吗?"是的。

因此,如果你想使用T[][],那么你需要进行

   for (int i = 0; i < array.Length; i++)
         array[i] = new T[someSize];

这就是为什么你的"锯齿状"数组不起作用的基本原因。当您声明另一个时,它实例化了水平数组和垂直数组,在这种情况下,您只得到垂直数组(列),并且必须自己实例化行。尽管两者的工作方式相当相似,但它们实际上并不能互换。