我正在尝试创建一个2D数组,其他数组代表列。
继承人我正在努力做的事情:
public int[] item0;
public int[] item1;
public int[] item2;
public int[] item3;
public int[] item4;
public int[] item5;
public int[] item6;
public int[] item7;
public int[] item8;
public int[] item9;
item0 = new int[22];
item1 = new int[22];
item2 = new int[22];
item3 = new int[22];
item4 = new int[22];
item5 = new int[22];
item6 = new int[22];
item7 = new int[22];
item8 = new int[22];
item9 = new int[22];
itemList = new int[10,22] {
{item0},
{item1},
{item2},
{item3},
{item4},
{item5},
{item6},
{item7},
{item8},
{item9}
};
但是我收到一个控制台错误,告诉我它没有达到预期的长度。
我已经查看了许多旧问题,但他们从未明确说明如何定义这样的数组。任何帮助将不胜感激。
答案 0 :(得分:1)
你不需要在开始时做所有这些。如果只是执行
,则多维数组不会出现锯齿状并自动使所有内部数组的大小为22itemList = new int[10,22];
此外,您可以像这样初始化:
itemList = new int[10,22] {
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 16, 17, 18, 19, 20, 21, 22},
{1, 3, 5, 7, 9 ...
等等。
答案 1 :(得分:1)
您可以将itemList
声明为“锯齿状”数组:
var itemList = new int[][] {
item0,
item1,
new int[] { 1, 2, 3 },
new int[] { 1, 2, 3, 4, 5, … },
item4,
item5,
…
};
我已经包含对预先存在的int[]
数组(item0
,item1
等)的引用以及内联数组实例化(new int[] { … }
)在上面的例子中。此外,请注意,对于锯齿状数组,itemList
中的单个数组项不需要具有相同的长度。这表明锯齿状阵列实际上不是二维的;它是一个数组数组。
答案 2 :(得分:1)
看起来您想要使用锯齿状数组,只需要将itemList初始化器更改为:
var itemList = new int[10][] { item0, item1, item2, item3, item4, item5, item6, item7, item8, item9 };
答案 3 :(得分:0)
这应该可以解决您的问题
var itemList = new int[][] {
item0,
item1,
item2,
item3,
item4,
item5,
item6,
};
但我建议你这样做
int[,] itemList = new int[,]
{
{1,2,3,4,5 },
{1,2,3,4,5 },
{1,2,3,4,5 },
};