当它转移到下一个表格并在数据表中进行更改时,以前的表格数据表会发生变化,为什么?

previous form datatable change when it transfered to next form and make changes in datatable,Why?

我有两个名为 form1form2 的表格,我必须将数据表 dtform1 传输到 form2。在 form2 构造函数我传递数据表参数 _dt 正如您在下面的代码中看到的那样,在 form1 按钮中单击我调用 form2 并传递参数 dt.i properply get dtform2.

//Form1 button click event
private void Button_Click(object sender, EventArgs e)
    {
      //i have filled datatable dt
        form2 f2= new form2(dt);        
        f2.Show();
    }
//from2
 public partial class form2: Form
    {
         DataTable dt = new DataTable();
         public form2(DataTable _dt)
        {
          InitializeComponent();
          dt = _dt;       
        }
    }
//change dt by adding columns in form2

当我更改 form2 的数据表时,然后更改以前形式的数据表 (form1) 也 change.i 无法理解为什么 dtform1 changed.please 告诉我为什么会这样?我有解决这个问题的方法,但我想知道为什么会这样。

因为你只有一个DataTable。当您将对象分配给变量时,您不会创建该对象的副本或克隆。您所做的只是将该变量设置为 referencesame 对象。可以把它想象成有两个变量指向内存中的同一个东西。

(相对于简单的原始值类型,如 intbool,它们会创建一个副本。)

要创建 DataTable副本,请使用 its .Copy() method:

public form2(DataTable _dt)
{
    InitializeComponent();
    dt = _dt.Copy();       
}