在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