zoukankan      html  css  js  c++  java
  • .net里面数组的复制

    1、非零开始的2维数组复制到从零开始的2维数组
                // 源数组[1001..1003,1001..1003]
                Array array1 = Array.CreateInstance(typeof(object), new int[] 22 }new int[] 10011001 });
                
    for (int i = array1.GetLowerBound(0); i <= array1.GetUpperBound(0); i++)
                    
    for (int j = array1.GetLowerBound(1); j <= array1.GetUpperBound(1); j++)
                        array1.SetValue(
    new object(), i, j);
                
    // 目标数组
                object[,] array2 = new object[array1.GetLength(0), array1.GetLength(1)];
                
    // 直接Copy,就这么简单,只是大家没想到
                Array.Copy(array1, array1.GetLowerBound(0), array2, 0, array1.Length);

    2、同样,每个维个数一样的情况下,非零开始的2维数组之间的复制
                // 源数组[1..3,1..3]
                Array array1 = Array.CreateInstance(typeof(object), new int[] 22 }new int[] 11 });
                for (int i = array1.GetLowerBound(0); i <= array1.GetUpperBound(0); i++)
                    
    for (int j = array1.GetLowerBound(1); j <= array1.GetUpperBound(1); j++)
                        array1.SetValue(
    new object(), i, j);
                
    // 目标数组[1000..1002,1000..1002],每个维的个数一样的情况下
                Array array2 = Array.CreateInstance(typeof(object), new int[] 22 }new int[] 10001000 });
                
    // 还是直接Copy
                Array.Copy(array1, array1.GetLowerBound(0), array2, array2.GetLowerBound(0), array1.Length);

    3、多维并且每个维数不同的情况(是不是从0开始的已经不重要了)
                // 源数组[2,3],一共6个
                int[,] array1 = new int[23];
                
    int temp = 0;
                
    for (int i = 0; i < array1.GetLength(0); i++)
                    
    for (int j = 0; j < array1.GetLength(1); j++)
                        array1[i, j] 
    = ++temp;
                
    // 目标数组[3,2],一共6个
                int[,] array2 = new int[32];
                
    // 还是直接Copy
                Array.Copy(array1, 0, array2, 0, array1.Length);
    看一下结果,发现array2里面是
    array2[0,0]=1
    array2[0,1]=2
    array2[1,0]=3
    array2[1,1]=4
    array2[2,0]=5
    array2[2,1]=6
    也就是直接内存copy过去,所以,顺序还是1、2、3、4、5、6,无视每一维的长度(只要保证总长度就可以了)
  • 相关阅读:
    atom 安装插件列表
    django学习
    windows 安装 python3
    python3 监控代码变化 自动重启 提高开发效率
    git无法pull仓库refusing to merge unrelated histories
    python 项目部署virtualenv
    python 多线程并发threading & 任务队列Queue
    python logging 日志使用
    jupyter 教程
    mysql 替换数据库字段内容
  • 原文地址:https://www.cnblogs.com/vwxyzh/p/1051347.html
Copyright © 2011-2022 走看看