声明二维数组的问题

Coo*_*guy 3 c# jagged-arrays multidimensional-array

我有以下代码:

    public int[] _SpDep = new int[50];
    public int[][] _SpDepCnt = new int[50][];
    public int[][] _SpReadType = new int[50][];

     _DepNo = Convert.ToInt16(strFileName[n].Substring(1, 2));
     _CntNo = Convert.ToInt16(strFileName[n].Substring(6, 2));
     _SpDep[_DepNo] = 1;
     _SpDepCnt[_DepNo][_CntNo] = 1;
     _SpReadType[_DepNo][_CntNo] = 1;
Run Code Online (Sandbox Code Playgroud)

到达此行时出错:

      _SpDepCnt[_DepNo][_CntNo] = 1;
Run Code Online (Sandbox Code Playgroud)

但我不知道出了什么问题?任何意见?这是2d array错误的声明吗?

Dan*_*mms 5

锯齿状阵列 [][]

如果使用类型数组int[][](锯齿状数组),您希望像这样初始化数组:

public int[] _SpDep = new int[50];
public int[][] _SpDepCnt = new int[50][];
public int[][] _SpReadType = new int[50][];
Run Code Online (Sandbox Code Playgroud)

然后初始化数组中的数组:

var length = 20;
for (int i = 0; i < length; i++)
{
    _SpDepCnt[i] = new int[length];
     _SpReadType[i] = new int[length];
}
Run Code Online (Sandbox Code Playgroud)

它被称为锯齿状数组,因为第二部分的长度可以变化,你可以这样做:

[1,2,3,4]
[5,6]
[7,8,9]
Run Code Online (Sandbox Code Playgroud)

多维数组 [,]

我相信你想使用int[,]被称为多维数组的类型.他们制作了一个有两个固定尺寸的阵列.

public int[,] _SpDepCnt = new int[50, 20];
public int[][] _SpReadType = new int[50, 20];
Run Code Online (Sandbox Code Playgroud)

多维数组将为每个索引创建相同大小的数组:

[1,2,3]
[4,5,6]
[7,8,9]
Run Code Online (Sandbox Code Playgroud)