C# - 多维整型数组

4
如何在C#中声明一个“深”数组?
我想要一个整数数组,例如:
[ 1, 4, 5, 6, [3, 5, 6, 7, 9], 1, 4, 234, 2, 1,2,4,6,67, [1,2,4,44,56,7] ]
我以前做过类似的事情,但是现在记不起正确的语法了。但是它大概是下面这样的:
Int32[] MyDeepArray = new Int32[] = {3, 2, 1, 5, {1, 3, 4, 5}, 1, 4, 5};
如何正确迭代它?如何检查一个数组是否为数组?
谢谢!
5个回答

7

我相信你正在寻找的术语是不规则数组

可以这样做:

int[][] jaggedArray2 = new int[][] 
{
    new int[] {1,3,5,7,9},
    new int[] {0,2,4,6},
    new int[] {11,22}
};

您可以像这样遍历它们:

for(int i = 0; i < jaggedArray2.Length; i++)
    for(int j = 0; j < jaggedArray2[i].Length; j++)
    {
        //do something here.
    }

1
@Steven,是的,我使用传统for循环,这样他可以更好地理解数组的不规则性质。 - Joseph

1

Int32[][] 可以让你声明一个二维数组,其中的维度不必全部相同。例如,你可以有以下这样的数组:

[
[2,3,4,5]
[5]
[1,2,3,4,5,6,7,8]
[3,5]
[4]
]

另一种选择是Int32[,],其中维度始终必须相同。

我不确定你所说的“如何检查数组是否为数组”是什么意思。


1

0
另一种创建二维数组的方法。
int[,] myArray = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
    
for(int i=0; i < 3; i++)
{
    for(int x=0; x < 3; x++)
    {
        Console.WriteLine(myArray[i,x]);
    }
}

0
关于“如何检查一个数组是否为数组”:C#是强类型的。任何声明为数组的东西都必须是数组。你要找的是一个整数数组,而不是整数的数组。因此,你外部数组中的每个项目都是一个强类型的整数数组。它们不是混合了整数和整数数组的东西。你能得到的最接近的东西是混合了整数数组和只包含一个整数的整数数组。鉴于这一点,你总是可以遍历它们,因为它们都是数组,你可以像处理数组一样处理它们,那些只包含一个项目的数组只会在迭代中执行一次。
如果你想显式地检查,因为你正在以不同的方式处理只包含一个整数的整数数组,那么你可以检查它们的.Length值。

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