我声明了一个数组
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)
它是如何发生的?
数组是.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)
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |