尽管使用 GetLength 检查,但多维数组出现 IndexOutOfRangeException
IndexOutOfRangeException on multidimensional array despite using GetLength check
我正在使用以下代码从 Excel 电子表格中读取值:
// Start with passed
int lastPassRow = sheets[passedVehicles].GetLength(0);
for (int i = 1; i < lastPassRow; i++)
{
// Exception here
if(DateTime.TryParse(sheets[passedVehicles][i, 0].ToString(), out result))
{
passedDates.Add((DateTime)sheets[passedVehicles][i, 0]);
}
}
sheets[passedVehicles]
的类型是 Object[,]
的多维数组,上面的 for 循环在 i = 1 时给我一个 IndexOutOfRange
异常,尽管我检查了行。
我为相关电子表格添加了一些日志记录,并验证了:
- i = 1 是失败的迭代
lastPassRow
的值为4
sheets[passedVehicles].GetLength(1)
的值也是四
所有值似乎都在我的范围内。还有其他可能导致此异常的原因吗?
注意:我从 i = 1 开始,因为第 0 行是电子表格中的 header,不包含我要读取的数据。
我怀疑是 0
超出了范围。
Excel 数组是从 1 开始的,而不是您可能期望的从 0 开始。
我正在使用以下代码从 Excel 电子表格中读取值:
// Start with passed
int lastPassRow = sheets[passedVehicles].GetLength(0);
for (int i = 1; i < lastPassRow; i++)
{
// Exception here
if(DateTime.TryParse(sheets[passedVehicles][i, 0].ToString(), out result))
{
passedDates.Add((DateTime)sheets[passedVehicles][i, 0]);
}
}
sheets[passedVehicles]
的类型是 Object[,]
的多维数组,上面的 for 循环在 i = 1 时给我一个 IndexOutOfRange
异常,尽管我检查了行。
我为相关电子表格添加了一些日志记录,并验证了:
- i = 1 是失败的迭代
lastPassRow
的值为4sheets[passedVehicles].GetLength(1)
的值也是四
所有值似乎都在我的范围内。还有其他可能导致此异常的原因吗?
注意:我从 i = 1 开始,因为第 0 行是电子表格中的 header,不包含我要读取的数据。
我怀疑是 0
超出了范围。
Excel 数组是从 1 开始的,而不是您可能期望的从 0 开始。