列表索引的C#数组超出范围

列表索引的C#数组超出范围,c#,arrays,list,C#,Arrays,List,我制作了一个程序,可以从文件中提取一些信息,对其进行一些操作,然后将其存储回列表中。 点击此链接: 我已经能够创建一个类,其中包含一个适合我需要的列表。但经过一些调试后,我发现我在每次循环迭代中都覆盖了列表。 然后,我决定创建一个列表数组-遵循以下链接: 创建列表数组,初始化它并添加元素。但是当它需要移动到下一个列表位置时,它抛出边界外异常 我尝试过一些事情(阅读了关于比赛条件的文章),但没有一件奏效。 只有当我用代码打开多个文件时,问题才会出现;否则,它工作得很好 在当前文件的最后一次迭代中

我制作了一个程序,可以从文件中提取一些信息,对其进行一些操作,然后将其存储回列表中。 点击此链接: 我已经能够创建一个类,其中包含一个适合我需要的列表。但经过一些调试后,我发现我在每次循环迭代中都覆盖了列表。 然后,我决定创建一个列表数组-遵循以下链接:

创建列表数组,初始化它并添加元素。但是当它需要移动到下一个列表位置时,它抛出边界外异常

我尝试过一些事情(阅读了关于比赛条件的文章),但没有一件奏效。 只有当我用代码打开多个文件时,问题才会出现;否则,它工作得很好

在当前文件的最后一次迭代中,在xmldata处引发异常。 示例:选择两个文件,每个文件将添加五个元素。在第一个文件的最后一个元素中,将抛出异常,并在最后一个元素的位置添加数据

附加信息:索引超出了数组的边界。(引发异常)

任何帮助都将不胜感激。非常感谢

代码:

List[]finalcontent=新列表[9999];
finalcontent[listpos]=新列表()//初始化每个文件名的列表
foreach(匹配中的匹配m)
{
双[]数字;
字符串辅助;
aux=m.Groups[1].ToString();
aux=Regex.Replace(aux,@“\s+”,“|”);
string[]numbers_str=aux.Split(新[]{“|”},StringSplitOptions.RemoveEmptyEntries);
数字=新的双精度[数字长度];
对于(int j=0;jf.ToString());

如果(i数组的大小是固定的,但列表会随着新项目的添加而自动调整大小

因此,既然您使用的是列表,为什么不使用列表列表呢

List<List<int>> ListOfListsOfInt = new List<List<int>>();

数组的大小是固定的,但添加新项时列表会自动调整大小

因此,既然您使用的是列表,为什么不使用列表列表呢

List<List<int>> ListOfListsOfInt = new List<List<int>>();
//将非ascii字符转换为。
对于(int jx=0;jx0x7f)行[jx]=(字节)';
这是一个很大的示例,但请检查此示例。在输入语句之前增加“jx”,可能会超出cnt的边界?

//将非ascii字符转换为。
对于(int jx=0;jx0x7f)行[jx]=(字节)';

这是一个很好的例子,但请检查这个例子。在输入语句之前增加“jx”,在使用列表时可能会超出cnt的边界-最好使用本机函数

List<xmldata>[] finalcontent = new List<xmldata>(); 
......
 finalcontent[listpos] = new List<xmldata>(); insted of   var _tmpVariable = new List<xmldata>();//Initializing a list for each filename
......
 _tmpVariable.Add(new xmldata
                                    {
                                        colorname = colors_str[i],
                                        colorvalues = values,

                                    });//Closing list add declaration

                    fs.Close();//closing current file
                    listpos++;//Increment list position counter
                    finalcontent.Add(_tmpVariable); // add list into list
List[]finalcontent=newlist();
......
finalcontent[listpos]=new List();代替var _tmpVariable=new List();//初始化每个文件名的列表
......
_tmpVariable.Add(新的xmldata
{
colorname=colors\u str[i],
颜色值=值,
});//结束列表添加声明
fs.Close();//关闭当前文件
listpos++;//递增列表位置计数器
finalcontent.Add(_tmpVariable);//将列表添加到列表中
由于没有异常详细信息,因此很难获得引发异常的位置。 可能是列表问题、字符串问题或其他问题(甚至文件读取问题),
因此,请使用当前异常详细信息更新此列表。

使用列表时,最好使用本机函数

List<xmldata>[] finalcontent = new List<xmldata>(); 
......
 finalcontent[listpos] = new List<xmldata>(); insted of   var _tmpVariable = new List<xmldata>();//Initializing a list for each filename
......
 _tmpVariable.Add(new xmldata
                                    {
                                        colorname = colors_str[i],
                                        colorvalues = values,

                                    });//Closing list add declaration

                    fs.Close();//closing current file
                    listpos++;//Increment list position counter
                    finalcontent.Add(_tmpVariable); // add list into list
List[]finalcontent=newlist();
......
finalcontent[listpos]=new List();代替var _tmpVariable=new List();//初始化每个文件名的列表
......
_tmpVariable.Add(新的xmldata
{
colorname=colors\u str[i],
颜色值=值,
});//结束列表添加声明
fs.Close();//关闭当前文件
listpos++;//递增列表位置计数器
finalcontent.Add(_tmpVariable);//将列表添加到列表中
由于没有异常详细信息,因此很难获得引发异常的位置。 可能是列表问题、字符串问题或其他问题(甚至文件读取问题),
因此,请使用当前异常详细信息更新此信息。

尝试更改以下内容:

if (i <= colors_str.Length) 

如果(i尝试更改以下内容:

if (i <= colors_str.Length) 

if(我请发布a-你发布了很多代码,但没有堆栈跟踪,对于初学者来说…我将编辑并只留下所需的。请发布a-你发布了很多代码,但没有堆栈跟踪,对于初学者来说…我将编辑并只留下所需的。我编辑并添加了一条注释,其中包含错误-就在我初始化新xmldata列表的地方。此循环works okay没有引发任何问题,从来没有。我的异常在xmldata上引发。如果我更改了(我),我编辑并添加了一条注释,它会在其中抛出错误,这正是我初始化新xmldata列表的地方。
if (i < colors_str.Length).