将锯齿状数组初始化为零

时间:2018-10-03 00:07:04

标签: c# arrays init jagged-arrays

有没有那么冗长的方法来初始化这个锯齿状的数组?

    var r = new int[a.Length][];
    for (int i=0; i<a.Length; i++)
    {
        r[i] = new int[2];
    }

我不需要多维数组int[,],因为以后可能需要分配给int[2]以外的其他元素

2 个答案:

答案 0 :(得分:1)

答案是否定的,您不能在初始化时隐式default一个锯齿状的数组。

锯齿状的数组实际上只是一个东西的数组(在这种情况下是另一个数组),因此每个元素都必须由其自身初始化。

我可以建议使用

  • 一个多维数组,它将在初始化时依次为defaulted

  • 无法为default编写通用帮助程序并初始化

  • 扩展方法

答案 1 :(得分:1)

Linq等效项仅稍微较不冗长:

int[][] r = Enumerable.Range(1,a.Length)
                      .Select(i => new int[2])
                      .ToArray();