我写了下面的代码:
1. MyClass[] origArr=new MyClass[3];
2. MyClass[] arr1;
3. // filled the array with objects and did some work on it .
4. dgv_1.DataSource=origArr;
5.
6. // Here is the problem :
7. arr1=origArr;
8. // do some work on arr1 ...
9. dgv_2.DataSource=arr1;
Run Code Online (Sandbox Code Playgroud)
出于某种原因,当'arr1'中的数据发生变化时,'origArr'中的数据发生了变化......
我认为这可能是因为'origArr'和'arr1'是指向同一个对象的指针,所以我将第7行更改为:
7. origArr.CopyTo(arr1,0);
Run Code Online (Sandbox Code Playgroud)
但它不起作用......我该怎么做才能使指针指向不同的对象?
第7行将引用复制到origArrinto中arr1,因此它们指向相同的物理数组.
即使是Clone或者CopyTo也没有多大帮助:您将获得数组结构的副本,但在那里会复制对您的oringinal类的引用.因此,最终得到一个具有相同对象的新数组.
您将需要克隆MyClass对象并将这些克隆放入新数组中.