C#GetLength二维数组。指数数组的边界之外

时间:2019-02-05 20:02:18

标签: c# visual-studio-2017

我想使用GetLength()获得数组第二维的长度。

我使用GetLength(0)作为第一维度,而使用GetLength(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.',当尝试访问第二维时(使用第二个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

主要目的是读取包含14列的.csv文件,第一个是公司名称,第二个是年份,第二个for loop内不需要。

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

行数不断变化,因此需要动态。

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

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

1 个答案:

答案 0 :(得分:4)

data[i][1]

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

data[i].Length