当两者相等时,数组C#中的数据不匹配

Raj*_*Raj 0 .net c#

我声明了一个数组

string[] arr1;
string[] arr2;
Run Code Online (Sandbox Code Playgroud)

在某一点上,我认为这是值得的

arr1 = new string[] { "value1" , "Value2 };
arr2 = arr1;
Run Code Online (Sandbox Code Playgroud)

之后我再次改变arr1的值

arr1[0]="value3";
arr1[1]="value4";
Run Code Online (Sandbox Code Playgroud)

现在如果我检查arr2,arr1中的这些变化也会反映出来.

arr2[0] value is "value3";
arr2[1] value is "value4";
Run Code Online (Sandbox Code Playgroud)

它是如何发生的?

p.s*_*w.g 6

数组是.NET中的引用类型.当你这样做时,arr2 = arr1你使两个变量都指向内存中的同一个数组.对一个元素的任何更改都将直接反映在另一个元素中.

要制作数组的副本,请使用以下Array.Clone方法:

arr2 = (string[])arr1.Clone();
Run Code Online (Sandbox Code Playgroud)

或Linq的Enumerable.ToArray方法:

arr2 = arr1.ToArray();
Run Code Online (Sandbox Code Playgroud)