C# 将交错数组初始化为零

C# 将交错数组初始化为零,c#,arrays,init,jagged-arrays,C#,Arrays,Init,Jagged Arrays,是否有一种不那么冗长的方法初始化这个锯齿状数组 var r = new int[a.Length][]; for (int i=0; i<a.Length; i++) { r[i] = new int[2]; } var r=newint[a.Length][]; 对于(int i=0;i来说,答案是否定的,您不能在初始化时隐式地default锯齿状数组 交错数组实际上只是一个数组(在本例中是另一个数组),因此每个元素都必须由其自身初始化

是否有一种不那么冗长的方法初始化这个锯齿状数组

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

对于(int i=0;i来说,答案是否定的,您不能在初始化时隐式地
default
锯齿状数组

交错数组实际上只是一个数组(在本例中是另一个数组),因此每个元素都必须由其自身初始化

我可以建议使用

  • 相反,多维数组在初始化时将被默认设置为

  • 如果失败,您可以将通用帮助器写入
    默认值
    并初始化

  • 或者一种扩展方法


Linq等价物的详细程度仅略低一些:

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

强制链接:我的意思是更快地键入而不是更快的cpuf。在我的情况下,多维数组可能非常稀疏,例如我可能有
a[0]=int[2]……a[1000]=int[100]
,这意味着
int[1000100]
,我假设它分配的内存远远大于
int[1000][