在c#中,一个类的数组和两个连接的实例为什么呢?

Dab*_*bas 0 c# class

我写了下面的代码:

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)

但它不起作用......我该怎么做才能使指针指向不同的对象?

Han*_*ing 7

第7行将引用复制到origArrinto中arr1,因此它们指向相同的物理数组.

即使是Clone或者CopyTo也没有多大帮助:您将获得数组结构的副本,但在那里会复制对您的oringinal类的引用.因此,最终得到一个具有相同对象的新数组.

您将需要克隆MyClass对象并将这些克隆放入新数组中.