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()
在内部将其所有元素复制到一个新数组,然后返回它。