如何在列表中按值保存数组而不是C#中的引用

Sab*_*oki 2 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 changes
   ....
}
Run Code Online (Sandbox Code Playgroud)

如果您跟踪此代码,请注意我的列表中的数组也会更改,但我不想这样,我该如何解决此问题?

Met*_*ght 6

添加数组的副本:

List<int[]> lisarr = new List<int[]>();
int[] a = new int[1];
a[0] = 1;
lisarr.Add(a.ToArray());
a[0] = 10;
Run Code Online (Sandbox Code Playgroud)

  • 只是为了澄清,这是有效的,因为`ToArray()`使用`Array.CopyTo()`在内部将所有元素复制到一个新数组,然后返回它. (2认同)