C# - 如何将数组声明为2D数组的列

时间:2016-09-22 07:19:17

标签: c# arrays

我正在尝试创建一个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} 
};

但是我收到一个控制台错误,告诉我它没有达到预期的长度。

我已经查看了许多旧问题,但他们从未明确说明如何定义这样的数组。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

你不需要在开始时做所有这些。如果只是执行

,则多维数组不会出现锯齿状并自动使所有内部数组的大小为22
itemList = 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[]数组(item0item1等)的引用以及内联数组实例化(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 },
        };