C# 索引超出数组文件的边界

C# 索引超出数组文件的边界,c#,C#,当我运行代码并输入一个输入时,我的代码抛出一个异常 数组边界外的索引 这是我的密码 public static void ShowDiscription() { Console.WriteLine("Enter Course ID: "); string ReqCourseID = Console.ReadLine(); Console.WriteLine(); if (Program

当我运行代码并输入一个输入时,我的代码抛出一个异常 数组边界外的索引 这是我的密码

public static void ShowDiscription()
        {
            Console.WriteLine("Enter Course ID: ");
            string ReqCourseID = Console.ReadLine();
            Console.WriteLine();
            if (Program.AllCourses.ContainsKey(ReqCourseID))
            {
                FileStream FS = new FileStream("Description.txt", FileMode.Open);
                StreamReader SR = new StreamReader(FS);

                while (SR.Peek() != -1)
                {
                    string z = SR.ReadLine();


                    String[] Fields;
                    Fields = z.Split('@');
                    string courseName = Fields[0];
                    string coursedescription = Fields[1];
                    if (ReqCourseID.CompareTo(Fields[0]) == 0)
                    {

                        Console.WriteLine(Fields[1]);
                        SR.Close();
                        return;
                    }

                }

            }
          else { 
            Console.WriteLine("Entered Course ID is not found! press any key to continue");

                }

        }
我不知道有什么问题 该文件有一个delimter@分隔主题代码及其描述。 如果description.txt文件太大,是否会有所不同?
关于

您从不初始化阵列

int count;   //number of indices that your array will contain.
string [] Fields =  new string[count];
如果您不知道将有多少索引,请使用
列表

List<string> Fields =  new List<string>();
string courseName = "Programming";
Fields.Add(courseName);
列表字段=新列表();
字符串courseName=“编程”;
字段。添加(courseName);

使用断点,逐步检查代码,找出与预期不同的地方。不,那不是我,那不是java lol@geofoverfield我知道编程语言的差异。我将其标记为重复,因为索引越界在任何语言中都是相同的。我用6种语言编写,数组基本上都是一样的。而且它不必是你的帖子就能复制。。。不管怎样,请检查下面的答案。@GeoffOverfield将问题标记为结束,然后回答该问题会发出混合信号。结束一个问题会阻止其他人回答-所以你也不应该发布答案。谢谢Rob。很高兴知道信号警察今天和我们在一起。我标记了它,因为它是重复的。你可能会在一瞬间找到500篇关于索引超出堆栈溢出范围的帖子,更不用说谷歌了。。。显然他不会去找他们,所以我还是给了他一个答案。下一次,我会和你确认一下。听起来不错?添加的字符串[]字段=新字符串[2];同样的错误放在一个断点,看看它在哪里超出了界限。你可以用任何你喜欢的值初始化它,但是string.Split返回一个数组,代码将string Split的返回赋值给数组变量,这样初始化的维度就丢失了。问题是:其中一行没有两个字段。也许最后一行是空行(经常发生)