带有两个2D数组的锯齿数组

3
如何创建一个包含两个二维数组的锯齿数组?请帮忙。谢谢。
int[][] jaggedArray = new int[3][];

以上代码创建了一个只有三个元素的一维数组,每个元素都是由整数构成的一维数组。请问有谁能帮我创建一个二维数组?


你的意思是每个交错数组中的每个元素都被实例化为相同的维度吗? - Jodrell
我想要一个不同行长度的二维数组,这是否可能? - Udit Saikia
1
你是指“2D多维数组”还是“二维不规则数组”或其他什么? - Jodrell
3个回答

2
这个怎么样:
int[][,] jaggedArray = new int[3][,];
,创建嵌套数组中的2D数组。了解有关多维数组的更多信息,请访问MSDN
接下来,您必须初始化该数组中每个2D数组:
int[,] 2dArray1 = new int[2,3];
jaggedArray[0] = 2dArray1;

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

And so on.


但是你为什么要这样做,而不是使用 int[3][][] 呢? - Jodrell
1
当然,这是你的聚会。 - Patrick Hofman
2-D数组是否可能包含长度分别为4、3和2的3行? - Udit Saikia
我有一个问题也不太清楚:“创建一个整数的锯齿数组。该数组应包含两个2D数组,第一个2D数组应包含3行,分别具有4、3和2的长度。第二个2D数组应包含2行,长度分别为3和4。” - Udit Saikia
所以你想要两个数组?看看Jodrell的回答。那是你需要的吗? - Patrick Hofman
显示剩余5条评论

2
我认为你想要类似以下这样的内容:

我认为您需要像这样的东西:

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;` - Udit Saikia
1
@UditSaikia 看起来在语法上是正确的,但是在注释中很难确定。 - Jodrell
它会报错 错误1:无法隐式转换类型'int[][]'为'int[]' - Udit Saikia
@UditSaikia,现在我已经将您的评论添加到我的问题中,这就有意义了,请查看编辑。 - Jodrell
是的,这正是我正在寻找的。感谢大家。 - Udit Saikia

1
第二对方括号表示维度。所以这就像是声明一个多维数组,只不过你不需要在定义中指定维度。你可以用不同的维度初始化每个数组。
int[][,] jaggedArray = new int[3][,];

但是为什么你要这样做,而不是使用 int[3][][] 呢? - Jodrell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接