如何扩展锯齿状阵列

时间:2016-08-12 21:05:16

标签: c# arrays list multidimensional-array jagged-arrays

我尝试使用Array.AddRange扩展锯齿状数组但没有成功。 我不知道它为什么不工作,我也没有例外,但我的阵列范围没有变化。 这是我使用的代码:

public World( ushort[][][] worldMatrice)
{
    // OldWith = 864
    ushort OldWidth = (ushort)worldMatrice.GetLength(0);

    // Extend the matrice to (1024) => only the first level [1024][][]            
    worldMatrice.ToList().Add(new ushort[1024- OldWidth][]);
    // NewWidth = 864 , and should be 1024 ...
    ushort NewWidth = worldMatrice.getLenght(0);
}

3 个答案:

答案 0 :(得分:1)

https://msdn.microsoft.com/en-us/library/bb397694.aspx

Array.AddRange()不会更改数组的维度,并且Array.Length将始终返回数组可以容纳的最大元素数,而不是其中包含的非空元素的总数。

如果您想要更改数组的尺寸,您可能需要将旧数组中的值传输到具有所需尺寸的新数组。

int[] newArray = new int[1024];
Array.Copy(oldArray, newArray, oldArray.Length);

要获取数组中非null元素的数量,请使用类似

的内容
int count = array.Count(s => s != null);

答案 1 :(得分:1)

您没有保存输出。 试试这个:

    worldMatrice = worldMatrice.ToList().Add(new ushort[1024- OldWidth][]).ToArray();

答案 2 :(得分:0)

worldMatrice.ToList()

将创建数组的副本,然后您不做任何操作