使用For循环添加到列表列表时出错(ArgumentOutOfRangeException)

本文关键字:列表 出错 ArgumentOutOfRangeException 使用 循环 添加 For | 更新日期: 2023-09-27 17:58:50

此处为第一个计时器。StackOverflow帮助我在一定程度上查找数组和列表,但我遇到了一个在其他地方找不到答案的问题。

目标:取一个现有的多维数组,读取每一行,如果它以正确的标识符开头,则将该行拉入列表。每个列表都成为我列表的一部分。

问题是:如果我使用newGrid[0]。Add(CSVReader.grid[x,y]);低于它运行良好。但是如果我使用[y]而不是[0],我会得到一个异常。在我得到异常的时候y=0不是吗?我想使用for循环的y使从数组中提取的每一行都成为一个新列表。

    public void processCSV () {
    List<List<string>> newGrid = new List<List<string>>();
    for (int y = 0; y < CSVReader.grid.GetUpperBound(1); y++) {
        if (CSVReader.grid[0,y] == "T1") {
            newGrid.Add(new List<string>());
            for (int x = 0; x < CSVReader.grid.GetUpperBound(0); x++) {
                newGrid[y].Add(CSVReader.grid[x,y]);    
            }
            foreach(string item in newGrid[y]) {    
                print(item);
            }
        }
    }
}

使用For循环添加到列表列表时出错(ArgumentOutOfRangeException)

newGrid中的行号与CSVReader.grid中的行号不匹配,因为您只从源数组中复制了一些行。

不重复使用y,而是使用单独的变量,每次调用newGrid.Add或简单地将元素添加到最后一行时,该变量都会计算newGrid中的行数。