首页 > 解决方案 > C# GetLength 二维数组。指数数组的边界之外

问题描述

我想使用GetLength().

我读到 usingGetLength(0)是第一个维度, usingGetLength(1)是第二个维度。

资料来源:https ://social.msdn.microsoft.com/Forums/vstudio/en-US/a7ddde89-35cc-4a29-9aab-ac42b8fd75fe/c-30-two-dimensional-array-length?forum=csharpgeneral

但是,这对我不起作用并且正在抛出:System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'尝试访问第二维(使用 second for loop)时。

下面是我正在使用的代码片段。

List<string> barDates = new List<string>();

        List<string> barValues = new List<string>();

        for (int i = 0; i < data.GetLength(0); i++)
        {
            MessageBox.Show(data[i][0] + " " + data[i][1]);

            for (int x = 2; x < data.GetLength(1) - 2; x++)
            {
                int value = 0; 

                value = value + Int32.Parse(data[i][x]);

                barValues.Add(value.ToString());
            }

            barDates.Add(data[i][1]);
        }

        barValues.ToArray();

        barDates.ToArray();

这是data具有值的变量:https ://i.imgur.com/vqjeSgr.png

这样做的主要目标是读取一个.csv包含 14 列的文件,第一个是企业名称,第二个是年份,第二个不需要for loop

请忽略MessageBox.Show(data[i][0] + " " + data[i][1]);,因为我有这个只是为了查看是否正在处理正确的值。

行数是不断变化的,所以需要是动态的。

维度 2 中的所有数字将加在一起,然后添加到每行的数组中。

然后该数组将在条形图中使用。

标签: c#visual-studio-2017

解决方案


data[i][1]

这是一个锯齿状数组。data.GetLength(1)将不起作用,因为数据没有第二维。改用这个:

data[i].Length

推荐阅读