我有下面的代码从输入文本文件创建了2个整数数组,我试图使用2个数组中的值来使用存储过程读取数据库但是我收到此错误:
索引超出了数组的范围。
当我尝试分配
时运行和调试程序时出现错误
代码中的tests[x] = testId;
。
//read the error file
using (var reader = new StreamReader(@"D:\Temp\AccessError.txt"))
try
{
int testId = 0;
int eventId = 0;
string line;
while ((line = reader.ReadLine()) != null)
{
//split the line
string[] parts = line.Split(new[] { "Event" }, StringSplitOptions.None);
//get valid integers
int[] tests = GetInts(parts[0].Split(' ', '\'')).ToArray();
int[] events = GetInts(parts[1].Split(' ', '\'')).ToArray();
foreach (int x in tests)
{
tests[x] = testId;
}
foreach (int y in events)
{
events[y] = eventId;
}
//stored proc to call database
SybaseAccess.GetPlans(aseConn, testId, eventId);
}
}
答案 0 :(得分:0)
错误信息可能正是出现的问题:您正试图以不存在的索引访问数组。
让我们说你已经从线上解析了数字1,2,3,4,5。这些数字存储在tests
数组中,它有五个元素。在这种情况下,前四个数组访问将起作用,但第五个将失败,因为数组具有索引0,1,2,3,4
您应该检查tests
中的数字是否超过数组的长度。
此外,我不明白你到底在做什么。您正在解析一行中的数字数组?然后通过用testId替换它来覆盖这些数字中的每一个?那很复杂。如果你想让一个包含n次testId的数组作为整数,为什么不直接创建它呢?