当我运行此代码时,它在第一次迭代中需要11个元素。在第二次迭代中,它减少到6个元素,在最后一个中它需要1个元素,然后显示“数组超出范围异常”。
我做错了什么?
foreach (string line in File.ReadLines(Path))
{
string [] column = line.Split(',');
if (id == column[4])
{
return false;
}
Array.Clear(column, 0, column.Length);
}
答案 0 :(得分:0)
如果你说line在第3次迭代中只有1个元素,那么你创建column = line.Split(','),column将有1个元素。所以在这一点上,列[4]是“超出范围”,因为字符串数组中只有一个元素。
你到底想要做什么,所以我们可以给你一个比例外更好的答案。
编辑:所以你的评论所要做的就是看第5列是否与id中的内容匹配,如果是,则返回false?
foreach (string line in File.ReadLines(Path))
{
string [] column = line.Split(',');
if (column.Count() >= 5 && column.id == column[4])
{
return false;
}
}
这将确保在尝试访问== check中的第5个元素列[4]之前,列数组中至少有5个元素。
答案 1 :(得分:0)
您是否尝试过确保要检查的行有足够的列?
第4列是指索引4处的列?或者你的意思是指数3的第4列?
private bool SomeMethod(String path, String id)
{
string [] column ;
foreach (string line in File.ReadLines(Path))
{
column = line.Split(',');
//check that there are at least 5 columns before comparing it with ID
if ((column.Length >= 5) && (id == column[4]))
{
return false;
}
}
}