.net里面数组的复制
2008-01-24 12:36
211 查看
1、非零开始的2维数组复制到从零开始的2维数组
// 源数组[1001..1003,1001..1003]
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]
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],每个维的个数一样的情况下
// 还是直接Copy
Array.Copy(array1, array1.GetLowerBound(0), array2, array2.GetLowerBound(0), array1.Length);
3、多维并且每个维数不同的情况(是不是从0开始的已经不重要了)
// 源数组[2,3],一共6个
int[,] array1 = new int[2, 3];
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[3, 2];
// 还是直接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,无视每一维的长度(只要保证总长度就可以了)
// 源数组[1001..1003,1001..1003]
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]
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],每个维的个数一样的情况下
// 还是直接Copy
Array.Copy(array1, array1.GetLowerBound(0), array2, array2.GetLowerBound(0), array1.Length);
3、多维并且每个维数不同的情况(是不是从0开始的已经不重要了)
// 源数组[2,3],一共6个
int[,] array1 = new int[2, 3];
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[3, 2];
// 还是直接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,无视每一维的长度(只要保证总长度就可以了)
相关文章推荐
- 关于Flex里面的对象或者ArrayCollection等数组的深度复制问题
- c语言把一个数组里面的部分值直接复制到另外一个数组
- .net 复制DataTable 里面的Row到另一个DataTable
- 【ThinkingInJava】45、用java标准库里面的静态函数调用,复制数组
- c语言把一个数组里面的部分值直接复制到另外一个数组
- 从.net源码中复制过来的中国农历数组,做万年历必备
- C++第16周项目1(2)复制字符串/字符数组
- .Net学习笔记2-.Net基础1.2 循环与数组
- 如何实现win7不打开文件直接复制文件里面的内容
- 一个字符数组,里面的字符可能是a-z、A-Z、0-9.现在要求对数组进行排序,要求所有小写字符放在最前面,所有大写字符放在中间,所有数字放在最后,而且各部分内部分别有序(创新工场)
- js 判断数组里面的值数否存在
- Java中数组复制的几种方法
- angular2 一个数组里面嵌套两个数组 再循环展示出来
- System.arraycopy实现数组之间的复制
- 1到100,放在长度99的数组里,有一个没有在里面,编程找出那个数
- 用锯齿形数组提高.NET应用程序速度
- 一个简单的数据解析就是数组里面只有字典类型的用jsonmodel方式
- java的数组复制效率比较
- 如何在winhex里面将一个文件转成C语言数组存储
- Java 数组的 创建,填充,复制,排序,重载