声明二维数组时出现问题
本文关键字:问题 二维数组 声明 | 更新日期: 2023-09-27 18:07:22
我有以下代码:
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;
到达此行时出现错误:
_SpDepCnt[_DepNo][_CntNo] = 1;
但我不知道怎么了?有什么意见吗?是2d array
申报错误吗?
锯齿形阵列[][]
如果使用类型为int[][]
的数组(锯齿状数组(,您希望初始化您的数组,如下所示:
public int[] _SpDep = new int[50];
public int[][] _SpDepCnt = new int[50][];
public int[][] _SpReadType = new int[50][];
然后初始化数组中的数组:
var length = 20;
for (int i = 0; i < length; i++)
{
_SpDepCnt[i] = new int[length];
_SpReadType[i] = new int[length];
}
它被称为锯齿状阵列,因为第二部分的长度可以变化,例如:
[1,2,3,4]
[5,6]
[7,8,9]
多维数组[,]
我相信您希望使用类型int[,]
,它被称为多维数组。他们制作了一个两个固定维度的数组。
public int[,] _SpDepCnt = new int[50, 20];
public int[][] _SpReadType = new int[50, 20];
多维数组将为每个索引创建相同大小的数组:
[1,2,3]
[4,5,6]
[7,8,9]
当您使用[][]声明"数组数组"时,您需要初始化外部维度以引用分配的数组,如下所示:
public int[][] _SpReadType = new int[50][];
for (int i = 0; i < 50; ++i)
_SpReadType[i] = new int[SIZE]; // Where you have to decide on SIZE
[][]数组也称为"参差不齐的数组"或"锯齿状数组",因为每行的大小可能不同,因为每一行都是一个单独的数组。
或者,您可以使用以下语法使用实际的2D阵列:[,]
例如:
public int[,] _SpReadType = new int[50,SIZE];
然后你访问这样的元素:
int value = _SpReadType[row,col];
这是一个锯齿状数组,在使用之前必须初始化元素
myJaggedArray[0] = new int[5];
myJaggedArray[1] = new int[4];
myJaggedArray[2] = new int[2];
http://msdn.microsoft.com/en-us/library/2s05feca(v=vs.71(.aspx
您尝试的被称为jagged arrays
,而不是multidimensional arrays
。
如果你想使用二维数组,你可以像这样使用它;
public int[,] _SpDepCnt = new int[50, 50];
_SpDepCnt[_DepNo, _CntNo] = 1;
如果你想使用锯齿状数组,你可以像这样使用它;
public int[][] _SpReadType = new int[50][];
for (int i = 0; i < 50; i++)
_SpReadType[i] = new int[SIZE];
锯齿状数组是指元素为数组的数组。的元素锯齿状阵列可以具有不同的尺寸和大小。锯齿状阵列有时被称为"阵列阵列">
您必须为2D阵列保留内存
public int[][] _SpDepCnt = new int[50][];
_SpDepCnt[_DepNo] = new int[50];
_SpDepCnt[_DepNo][_CntNo] = 1;