问题描述:创建若干个数组,个数由参数决定。每个数组大小都是一样的,而且已知的;
我这样创建之后,改变List中的任何一数组,其他数组都跟着变了。该如何深复制出多个独立的数组,并add到List中?
谢谢; protected void InitChannelSize(int nSubLoadCase)
        {
            double[] ChannelData = new double[134];
            double[] ChannelData_Copy = new double[134];
            
           List_ChannelData = new List<double[]>();            for(int i=0;i<nSubLoadCase;i++)
            {
                Array.Copy(ChannelData, ChannelData_Copy, ConstNumChannel * 6);
                List_ChannelData.Add(ChannelData_Copy);
                
            }
            return;
        }

解决方案 »

  1.   

    把代码:
    double[] ChannelData_Copy = new double[134];
    移动到for循环里边:
    Array.Copy(ChannelData, ChannelData_Copy, ConstNumChannel * 6);
    之前。因为数组是引用,你在循环中反复向同一个数组的引用填入数据,最后List里边的所有对象都是同一个ChannelData_Copy的引用。
      

  2.   

    每一个都需要new,否则他们是在同一个指针下工作的。
      

  3.   

    List_ChannelData.Add(ChannelData.ToArray());
      

  4.   

    这种方法是不是可以理解成将引用类型转换成值类型了。
    不是
    toarray复制了一个新的数组