如何在给定索引处覆盖数组中的元素?

时间:2019-03-04 12:50:58

标签: c#

我有一个应用程序,可让用户输入有关课程ID,名称,模块1-模块4标记的详细信息。我有一个添加按钮和一个用于编辑的按钮。每当用户输入他/她的详细信息时,所有内容都存储在名为allStudent的列表中,变量存储在结构中,模块标记存储为数组Marks,并且ID也添加到列表框中用户可以选择和编辑。我的问题是,当我单击“编辑”时,出现错误“ System.NullReferenceException:'对象引用未设置为对象的实例。' “它在S.Marks[0] = int.Parse(txtM1.Text);中突出显示btnEdit_Click

struct Student
    {
        public int ID;
        public string Name;
        public int[] Marks;
    }

    List<Student> allStudents = new List<Student>();

    private void btnAdd_Click(object sender, EventArgs e)
    {
        Student S = new Student();
        S.Marks = new int[4];

        S.ID = int.Parse(txtId.Text);
        S.Name = txtName.Text;

        S.Marks[0] = int.Parse(txtM1.Text);
        S.Marks[1] = int.Parse(txtM2.Text);
        S.Marks[2] = int.Parse(txtM3.Text);
        S.Marks[3] = int.Parse(txtM4.Text);

        allStudents.Add(S);

        lstBox.Items.Add(S.ID);
    }

    private void btnEdit_Click(object sender, EventArgs e)
    {
        Student S = new Student();

        S.ID = int.Parse(txtId.Text);
        S.Name = txtName.Text;

        S.Marks[0] = int.Parse(txtM1.Text);
        S.Marks[1] = int.Parse(txtM2.Text);
        S.Marks[2] = int.Parse(txtM3.Text);
        S.Marks[3] = int.Parse(txtM4.Text);

        allStudents[lstBox.SelectedIndex] = S;
    }

1 个答案:

答案 0 :(得分:3)

我认为您在创建Marks对象之后忘了初始化Student数组

S.Marks = new int[4];