繁体   English   中英

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

[英]How to overwrite element in array at given index? [duplicate]

这个问题已经在这里有了答案:

我有一个应用程序,可让用户输入有关课程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;
    }

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

S.Marks = new int[4];

暂无
暂无

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

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