C# List of Lines Index 超出范围
C# List of List of Lines Index was out of range
我遇到了一个与这里提到的问题非常相似的问题:
ArgumentOutOfRangeException Was Unhandled
我认为 contiguousLines[columnNum].Add(...)
是导致错误的原因,因为我正在使用 columnNum
建立索引
List<line> freeLines = new List<line>();
List<List<line>> contiguousLines = new List<List<line>>();
while(freeLines.Count > 0)
{
int columnNum = contiguousLines.Count;
contiguousLines[columnNum].Add(freeLines[0]);
freeLines.RemoveAt(0);
for(int i = 0; i < freeLines.Count; i++)
{
int last = contiguousLines[columnNum].Count;
if(contiguousLines[columnNum][last].upDown(freeLines[i]))
{
contiguousLines[columnNum].Add(freeLines[i]);
freeLines.RemoveAt(i);
i = -1;
}
}
// Further code that pulls individual elements from freeLines and
// is intended to place them into contiguousLines.
}
函数upDown
只是比较线的起点和终点,看一个(freeLines[i]
)是否在另一个(contiguousLines[columnNum]
)的下游。
System.ArgumentOutOfRangeException 未处理
Message=Index 超出范围。必须为非负数且小于
集合。参数名称:index
处理列表的列表时正确的语法是什么?
(注意:我不经常用 C# 编程,这个项目是我用 C++ 编写和工作的,后来才知道 C# 可以更好地与我工作的其余实用程序一起使用。在 C++ 中,我为我的容器使用了矢量,但显然 copy/pasting 逻辑不起作用,因为我不知道列表的一些细微差别。)
我想也可以只创建一个包含行列表的 ContiguousLine class,然后从 freeLines
添加到 List<ContiguousLine>
。即使那是一个更好的解决方案,我仍然很好奇为什么我不能以这种方式处理行列表的列表。
您需要先添加一个列表,然后才能访问该列
contiguousLines.Add(new List<line>());
contiguousLines[columnNum].Add(freeLines[0]);
int last = contiguousLines[columnNum].Count;
由于列表是从 0 开始索引的,因此您超过了 1。
我遇到了一个与这里提到的问题非常相似的问题:
ArgumentOutOfRangeException Was Unhandled
我认为 contiguousLines[columnNum].Add(...)
是导致错误的原因,因为我正在使用 columnNum
List<line> freeLines = new List<line>();
List<List<line>> contiguousLines = new List<List<line>>();
while(freeLines.Count > 0)
{
int columnNum = contiguousLines.Count;
contiguousLines[columnNum].Add(freeLines[0]);
freeLines.RemoveAt(0);
for(int i = 0; i < freeLines.Count; i++)
{
int last = contiguousLines[columnNum].Count;
if(contiguousLines[columnNum][last].upDown(freeLines[i]))
{
contiguousLines[columnNum].Add(freeLines[i]);
freeLines.RemoveAt(i);
i = -1;
}
}
// Further code that pulls individual elements from freeLines and
// is intended to place them into contiguousLines.
}
函数upDown
只是比较线的起点和终点,看一个(freeLines[i]
)是否在另一个(contiguousLines[columnNum]
)的下游。
System.ArgumentOutOfRangeException 未处理 Message=Index 超出范围。必须为非负数且小于 集合。参数名称:index
处理列表的列表时正确的语法是什么?
(注意:我不经常用 C# 编程,这个项目是我用 C++ 编写和工作的,后来才知道 C# 可以更好地与我工作的其余实用程序一起使用。在 C++ 中,我为我的容器使用了矢量,但显然 copy/pasting 逻辑不起作用,因为我不知道列表的一些细微差别。)
我想也可以只创建一个包含行列表的 ContiguousLine class,然后从 freeLines
添加到 List<ContiguousLine>
。即使那是一个更好的解决方案,我仍然很好奇为什么我不能以这种方式处理行列表的列表。
您需要先添加一个列表,然后才能访问该列
contiguousLines.Add(new List<line>());
contiguousLines[columnNum].Add(freeLines[0]);
int last = contiguousLines[columnNum].Count;
由于列表是从 0 开始索引的,因此您超过了 1。