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

在c#中,一个类数组和它的两个连接实例为什么?,c#,class,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.

我写了下面的代码:

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;  
由于某种原因,当“arr1”中的数据发生更改时,“ORIGAR”中的数据发生更改…
我想这可能是因为'origar'和'arr1'是指向同一对象的指针,所以我将第'7'行更改为:

7. origArr.CopyTo(arr1,0);

但它不起作用。。。如何使指针指向不同的对象?

第7行将引用复制到
origar
中,使其指向相同的物理数组

即使是
克隆
CopyTo
也不会有多大帮助:您将获得数组结构的副本,但其中对原始类的引用将被复制。因此,最终会得到一个新数组,其中的对象仍然相同

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

在c#中,变量包含引用,而不是值。要复制它吗

MyClass[] origArr=new MyClass[3];  
MyClass[] arr1 = new MyClass[3];
origArr.CopyTo(arr1,0);

您必须自己分配内存

您需要将第7行更改为
origArr.CopyTo(arr1,0)如您所述。但是您还需要初始化arr1数组

1. MyClass[] origArr=new MyClass[3];   
2. MyClass[] arr1=new MyClass[3];  
尝试使用


Array.Copy(src、dest、lenght)

你说它不工作是什么意思?请具体说明。我试过了,这是我试过的代码:Class1[]a=new Class1[3];对于(inti=0;i