C#锯齿数组

C#中的锯齿数组(jagged array),其中每行的元素个数可能不同,所以每个元素都是另一个数组。也可以有数组的数组的数组,甚至更复杂的数组。但是这些数组都必须有相同的基本类型。
 
声明数组的数组时,其语法要求在数组的声明中指定多个方括号对:
int[][] jaggedIntArray;
int[][][] jaggedIntArray;
锯齿数组的初始化不像多维数组那样简单,锯齿数组的初始化有两种方式:
1、可以初始化包含其他数组的数组,然后依次初始化子数组:
jaggedIntArray = new int[2][];
jaggedIntArray[0] = new int[3];
jaggedIntArray[1] = new int[4];
2、字面赋值的形式:
jaggedIntArray = new int[3][] { new int[] { 1, 2, 3 }, new int[] { 1 }, new int[] { 1, 2 } };
3、把数组的初始化和声明放在同一行上:
int[][] jaggedIntArray = new int[3][] { new int[] { 1, 2, 3 }, new int[] { 1 }, new int[] { 1, 2 } };
可以对锯齿数组使用foreach循环,但通常需要使用嵌套的foreach循环才能得到实际数据。例如,下述锯齿数组包含10个数组,每个数组又包含一个整数数组:
int[][] divisors1To10 =
{
      new int[] {1},
      new int[] {1,2},
      new int[] {1,2},
      new int[] {1,2,4},
      new int[] {1,5},
      new int[] {1,2,3,6},
      new int[] {1,7},
      new int[] {1,2,4,8},
      new int[] {1,3,9},
      new int[] {1,2,5,10}
};
如果像下面这样使用foreach语句则会失败:
foreach (int divisor in divisors1To10)
{
      Console.Writeline(divisor);
}
这是因为数组divisors1To10包含int[]元素,而不是int元素。正确的做法是循环遍历每个子数组和数组本身:

foreach (int[] divisorsOfInt in divisors1To10)
{
    foreach (int divisor in divisorsOfInt)
    {
        Console.WriteLine(divisor);
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值