C# 如何在C中按值而非引用保存列表中的数组#
我想保存数组的当前状态,以后再更改该数组,但当我在列表中保存数组,然后更改数组时,列表中的数组也会更改。这是一个示例代码,也是我代码的一部分:C# 如何在C中按值而非引用保存列表中的数组#,c#,arrays,list,C#,Arrays,List,我想保存数组的当前状态,以后再更改该数组,但当我在列表中保存数组,然后更改数组时,列表中的数组也会更改。这是一个示例代码,也是我代码的一部分: void main() { List<int[]> lisarr = new List<int[]>(); int[] a = new int[1]; a[0] = 1; lisarr.Add(a); a[0] = 10; // at this time lisarr[0] also
void main()
{
List<int[]> lisarr = new List<int[]>();
int[] a = new int[1];
a[0] = 1;
lisarr.Add(a);
a[0] = 10;
// at this time lisarr[0] also changes
....
}
void main()
{
List lisarr=新列表();
int[]a=新的int[1];
a[0]=1;
lisarr.添加(a);
a[0]=10;
//此时lisarr[0]也发生了变化
....
}
若您跟踪这段代码,请注意列表中的数组也会发生变化,但我不希望出现这种情况。如何解决此问题?添加阵列的副本:
List<int[]> lisarr = new List<int[]>();
int[] a = new int[1];
a[0] = 1;
lisarr.Add(a.ToArray());
a[0] = 10;
List lisarr=new List();
int[]a=新的int[1];
a[0]=1;
添加(a.ToArray());
a[0]=10;
为了澄清,这是因为ToArray()
使用array.CopyTo()
在内部将其所有元素复制到一个新数组,然后返回它。