【问题标题】:Jagged array with two 2d array带有两个二维数组的锯齿状数组
【发布时间】:2014-12-26 17:12:15
【问题描述】:

如何创建一个由两个二维数组组成的锯齿状数组?请帮忙。谢谢。

int[][] jaggedArray = new int[3][];

上面的代码创建了一个包含三个元素的一维数组,每个元素都是一个整数的一维数组。谁能帮我创建一个二维数组。

【问题讨论】:

  • 你是什么意思,锯齿状数组中的每个项目都实例化到相同的维度?
  • 我想要具有不同行长的二维数组。有可能吗?
  • 你的意思是“二维多维数组”还是“二维锯齿状数组”或别的什么?

标签: c# jagged-arrays


【解决方案1】:

我想你想要这样的东西,

var jaggedArray = new[]
        {
            new[] { 1 },
            new[] { 1, 2 ,3 },
            new[] { 1, 2 }
        };

这将创建一个“锯齿状”数组,其中每个“行”都有不同的长度。

以下所有断言都是True

jaggedArray.Length == 3
jaggedArray[0].Length == 1
jaggedArray[1].Length == 3
jaggedArray[2].Length == 2

如果您知道长度是固定的,但不知道数据,您可以这样做,

var jaggedArray = new[] { new int[1], new int[3], new int[2] };

根据您的评论,也许您想要这样的东西,

var jaggedArray1 = new[]
        {
            new[] { 1, 2, 3, 4 },
            new[] { 1, 2, 3 },
            new[] { 1, 2 }
        };

var jaggedArray2 = new[]
        {
            new[] { 1, 2, 3 },
            new[] { 1, 2, 3, 4 }
        };

int[][][] jaggedArray = new[]
        {
            jaggedArray1,
            jaggedArray2
        };

你可以这样做,

var jaggedArray = new[]
        {
            new[]
                {
                    new[] { 1, 2, 3, 4 },
                    new[] { 1, 2, 3 },
                    new[] { 1, 2 }
                },

            new[]
                {
                    new[] { 1, 2, 3 },
                    new[] { 1, 2, 3, 4 }
                }
        };

【讨论】:

  • 是的,我想要这样的东西。我可以这样实施吗? var jaggedArray1 = new[] { new[] { 1,2,3,4}, new[] { 1, 2 ,3 }, new[] { 1, 2 } }; var jaggedArray2 = new[] { new[] { 1,2,3}, new[] { 1, 2 ,3,4 }, }; int[] jaggedArray = new int[2][]; jaggedArray[0] = jaggedArray1; jaggedArray[1] = jaggedArray2;
  • @UditSaikia 在语法上看起来是正确的,但很难在评论中说出来。
  • 它给出一个错误错误 1 ​​无法将类型 'int[][]' 隐式转换为 'int[]'
  • @UditSaikia,现在我已将您的评论添加到我的问题中,这是有道理的,请参阅编辑。
  • 是的,这正是我想要的。谢谢大家。
【解决方案2】:

这个呢:

int[][,] jaggedArray = new int[3][,];

, 在锯齿状数组中创建二维数组。在MSDN 上阅读有关多维数组的更多信息。

接下来,您必须初始化该数组中的每个二维数组:

int[,] 2dArray1 = new int[2,3];
jaggedArray[0] = 2dArray1;

int[,] 2dArray2 = new int[4,5];
jaggedArray[1] = 2dArray2;

等等。

【讨论】:

  • 但是你为什么要这样做,而不是int[3][][]
  • @Jodrell:这是一个锯齿状数组,不是二维数组。
  • 行大小可以不同长度吗?
  • 当然,这是你的派对。
  • @UditSaikia 当然是在 3 维锯齿状数组和多维数组的集合中。
【解决方案3】:

第二对括号表示尺寸。所以这就像你在声明一个多维数组,只是你不需要在定义中指定维度。你可以用不同的维度来初始化每个数组。

int[][,] jaggedArray = new int[3][,];

【讨论】:

  • 但是你为什么要这样做,而不是int[3][][]
猜你喜欢
  • 1970-01-01
  • 2014-03-16
  • 2015-10-18
  • 2014-04-21
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多