如何仅将更改应用于克隆

时间:2019-05-03 18:35:13

标签: c#

我正在尝试克隆对象。 “更新学生分数”表单应创建当前学生对象的副本,然后将更改应用于副本。这样,仅当用户单击“确定”按钮时,更改才会保存到当前学生。要创建克隆,Student类将需要实现ICloneable接口,而Clone方法将需要实现深层副本。到目前为止,我已经了解到,当您需要原始文件中包含的其他对象的副本(而不是指向这些对象在原始文件中的位置的指针)的副本时,您需要某物的深层副本,以便在对以下内容进行更改时这些复制的属性,不会影响原始对象。我正在努力的是将其应用于我的模型。我不确定如何应用更改,以便仅在单击确定时才发生更改。以下是我要克隆的学生班级,并更新了学生表格。如果有帮助,我还附上了源代码。谢谢!

Code

Student.cs

    public class Student : ICloneable
    {
    public List<int> Scores = new List<int>();

    public string Name
    { get; set; }

    public object Clone()
    {
        return Name.Clone();
    }

frmUpdateStudent.cs

    public partial class frmUpdateStudent : Form
    {
    private Form1 parentForm;  //main form
    private Student studentToEdit; //student list
    private int index; //index

    public frmUpdateStudent(Form1 parentForm, int index)  //update parent form (Form1) with the new student and scores
    {
        this.parentForm = parentForm;
        this.index = index;
        studentToEdit = this.parentForm.GetStudent(index);

        InitializeComponent();

        StudentName.Text = studentToEdit.Name;
        UpdateScoreDisplay();
    }

    private void UpdateButton_Click_1(object sender, EventArgs e)  //open update form for current student
    {
        Student Form1 = new Student();
        Form1.Name = StudentName.Text;
        parentForm.UpdateStudent(index, Form1);
        Close();
    }

0 个答案:

没有答案