从数组中获取值并使用程序中的值

时间:2014-11-14 16:19:18

标签: c#

我有下面的代码从输入文本文件创建了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);
        }
    }

1 个答案:

答案 0 :(得分:0)

错误信息可能正是出现的问题:您正试图以不存在的索引访问数组。

让我们说你已经从线上解析了数字1,2,3,4,5。这些数字存储在tests数组中,它有五个元素。在这种情况下,前四个数组访问将起作用,但第五个将失败,因为数组具有索引0,1,2,3,4

您应该检查tests中的数字是否超过数组的长度。

此外,我不明白你到底在做什么。您正在解析一行中的数字数组?然后通过用testId替换它来覆盖这些数字中的每一个?那很复杂。如果你想让一个包含n次testId的数组作为整数,为什么不直接创建它呢?