一个遍历C#中多维数组的函数(不太菜的菜鸟级)

     大家看见这个标题的时候,肯定以为我在侮辱你的智商。遍历数组谁不会?
    只是此处的遍历略有不同:在基于反射的程序中,遍历多维数组 的每个元素,并且得知是访问了哪个下标下的元素。
   写完以后,还是觉得我的方法笨拙了点,希望大虾们能告诉我更好的办法。
   废话少说,先贴代码:
public static void ShowArray(Array item)
{
    int nRank = item.Rank;
    int i, j;
    int[,] des = new int[nRank, 2];
    int[] loc = new int[nRank];
    for (i=0; i<nRank; i++)
    {
        des[i,0] = item.GetLowerBound(i);
        des[i,1] = item.GetUpperBound(i);
        loc[i] = des[i,0];
    }
    string strTemp;
    while (loc[0]<=des[0,1])
    {
        strTemp = "item(";
        for (i=0; i<nRank-1; i++)
        {
            strTemp += loc[i] + ",";
        }
        strTemp += loc[i] + ")=" + item.GetValue(loc).ToString();
        Console.WriteLine(strTemp);
        loc[i]++;
        for (j=nRank-1; j>0; j--)
        {
            if (loc[j]>des[j,1])
            {
                loc[j] = des[j,0];
                loc[j-1]++;
            }
        }
    }
}

   以下是测试代码:
int[,,] arr = new int[,,]
    {
        {
            {1,2},
            {3,4},
            {5,6}
        },
        {
            {7,8},
            {9,10},
            {11,12}
        }
    };
ShowArray(arr);

  以下是运行结果:
item(0,0,0)=1
item(0,0,1)=2
item(0,1,0)=3
item(0,1,1)=4
item(0,2,0)=5
item(0,2,1)=6
item(1,0,0)=7
item(1,0,1)=8
item(1,1,0)=9
item(1,1,1)=10
item(1,2,0)=11
item(1,2,1)=12
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值