繁体   English   中英

System.ArgumentOutOfRangeException: '索引超出范围。 必须是非负的并且小于集合的大小。 参数名称:索引'

[英]System.ArgumentOutOfRangeException: 'Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index'

当它到达 classes[0].AddLesson(one); 时出现此错误; 行,我不知道为什么会这样? 任何想法都会很棒......我有两节课顺便说一下课程和时间表

   List<Timetable> classes = new List<Timetable>();
    private void Form1_Load(object sender, EventArgs e)
    {
        
        Lesson one = new Lesson("maths", 1, 2);
        Lesson two = new Lesson("science", 3, 4);
        classes[0].AddLesson(one);
        classes[1].AddLesson(two);

        DisplayList(classes);

    }

    void DisplayList(List<Timetable> timetable)
    {
        lstTimetable.Items.Clear();
        foreach(Timetable t in timetable)
        {
            lstTimetable.Items.Add(t);
        }
    }

该列表为空,因此您首先必须为该列表分配值。 如果你更换

classes[0].AddLesson(one);

classes.Add(one);

它应该工作。

来源

您在此处创建了一个新列表:

List<Timetable> classes = new List<Timetable>();

但是您尚未向该列表添加任何内容,因此它没有长度(零索引)。 当您尝试在此处为列表的第一个索引赋值时:

classes[0].AddLesson(one);

您收到异常,因为索引 0 不存在。

如果要添加到列表中,请执行以下操作:

classes.Add(one);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM