1 Array.Clone方法

命名空间:System

程序集:mscorlib

语法:

public Object Clone()

Array的浅表副本仅复制Array的元素,不管他们是引用类型还是值类型。可是不负责这些引用所引用的对象。

新Array中的引用与原始Array的引用指向同样的对象。

例:

int[] intArray1 = {1, 2};

int [] intArray2 = (int [])intArray1.Clone();

这里须要说明的是。须要使用强制类型转换,原因在于Clone()返回的类型为Object

2 Array.Copy方法

命名空间:System

程序集:mscorlib

Copy有几个重载函数:

//从第一个元素開始复制Array中的一系列元素。将它们粘贴到还有一Array中(从第一个元素開始)。长度为32位整数

public static void Copy(Array sourceArray, Array destinationArray, int length)

//从第一个元素開始复制Array中的一系列元素,将它们粘贴到还有一Array中(从第一个元素開始)。长度为64位整数

public static void Copy(Array sourceArray, Array destinationArray, long length)

//从指定的源索引開始,复制Array中的一系列元素。将它们粘贴到还有一Array中(从指定的目标索引開始)。长度和索引指定为32位整数

public static void Copy(Array sourceArray, int sourceIndex,Array destinationArray, int destinationIndex,int length)

//从指定的源索引開始,复制Array中的一系列元素。将它们粘贴到还有一Array中(从指定的目标索引開始)。

长度和索引指定为64位整数

public static void Copy(Array sourceArray, long sourceIndex,Array destinationArray, long destinationIndex,long length)

例: Array myIntArray=Array.CreateInstance( typeof(System.Int32), 5 );

for ( int i = myIntArray.GetLowerBound(0); i <= myIntArray.GetUpperBound(0); i++ )

{myIntArray.SetValue( i+1, i );}

Array myObjArray = Array.CreateInstance( typeof(System.Object), 5 );

for ( int i = myObjArray.GetLowerBound(0); i <= myObjArray.GetUpperBound(0); i++ )

{myObjArray.SetValue( i+26, i );}

// Copies the first element from the Int32 array to the Object array.

Array.Copy( myIntArray, myIntArray.GetLowerBound(0), myObjArray, myObjArray.GetLowerBound(0), 1 );

// Copies the last two elements from the Object array to the Int32 array.

Array.Copy( myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, myIntArray.GetUpperBound(0) - 1, 2 );

差别:

Clone()返回值是Object,Copy返回值为void

Clone()是非静态方法。Copy为静态方法。

Clone()会创建一个新数组。Copy方法必须传递阶数同样且有足够元素的已有数组。

C# Array类的浅复制Clone()与Copy()的差别的更多相关文章

  1. C# Array类的浅复制Clone()与Copy()的区别

    1 Array.Clone方法 命名空间:System 程序集:mscorlib 语法: public Object Clone() Array的浅表副本仅复制Array的元素,无论他们是引用类型还是 ...

  2. 深复制与浅复制&&strong,copy修饰符总结

    又是一个老生常谈的话题,可是貌似这个问题,好多ios开发工程师并不能理解透彻,所以简单记录分析一下深复制与浅复制的原理以及strong,copy修饰符的原理和使用.   一.深复制与浅复制      ...

  3. Java的clone():深复制与浅复制

    Java中要想自定义类的对象可以被复制,自定义类就必须实现Cloneable中的clone()方法,如下: public class Student implements Cloneable { pr ...

  4. C++Array类模板编写笔记

    C++Array类模板 函数模板和类模板都属于泛型技术,利用函数模板和类模板来创建一个具有通用功能的函数和类,以支持多种不同的形参,从而进一步简化重载函数的函数体设计. 声明方法:template&l ...

  5. [Python] dict字典的浅复制与深复制

    Python中针对dict字典有两种复制: (1)浅复制:利用 copy() 或者 dict() :复制后对原dict的内部子对象(方括号[]内元素)进行操作时,由浅复制得到的dict会受该操作影响 ...

  6. python 深复制与浅复制------copy模块

    模块解读: 浅复制: x = copy.copy(y)深复制: x = copy.deepcopy(y)(注:模块特有的异常,copy.Error) 深copy与浅copy的差别主要体现在当有混合对象 ...

  7. Python中的浅复制、深复制

    参考 https://docs.python.org/3/library/copy.html?highlight=copy%20copy#copy.copy https://en.wikipedia. ...

  8. php对象复制、clone、浅复制与深复制实例详解

    php对象复制.clone.浅复制与深复制实例详解 一.用clone(克隆)来复制对象$obj1 = new Object();$obj2 = clone $obj1;clone方法会触发对象里定义的 ...

  9. Java中的浅复制和深复制 Cloneable clone

    先看一个简单案例 public class Test {     public static void main(String args[]) {         Student stu1 = new ...

随机推荐

  1. MySql视图笔记(转载)

    1.       视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚拟存在的表.视图就像一个窗口(数据展示的窗口),通过这个窗口,可以看到系统专门提供的数据(也可以查看到数据表的全部数据),使 ...

  2. python 查看帮助和变量的强制转换

    查看帮助 dir() 函数 查看对象都有哪些属性和方法 用法:把要查询的对象写入()括号中即可 print(dir([])) (查看列表的方法) 执行: C:\Python27\python.exe ...

  3. DB2数据库报 [SQL0805N Package "NULLID.SQLLD003" was not found.]

    解决办法: cd /home/db2inst1/sqllib/bnddb2 bind @db2cli.lst blocking all grant public sqlerror continue C ...

  4. (4)ASP.NET内置对象1

    一.Response 把数据从服务端发送到客户端 Response.Write() 在页面上输出数据 Response.WriteFile(@"F:\WriteFile.txt") ...

  5. HDU 1025 Constructing Roads In JGShining's Kingdom[动态规划/nlogn求最长非递减子序列]

    Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65 ...

  6. iOS 动画笔记 (二)

    有它们俩你就够了! 说明:下面有些概念我说的不怎么详细,网上实在是太多了,说了我觉得也意义不大了!但链接都给大家了,可以自己去看,重点梳理学习写动画的一个过程和一些好的博客! 一:说说这两个三方库,C ...

  7. TCO 2015 Round 2A DIV1

    ModModMod 傻逼数论 题意: 这是一道卖萌的题..给你一个取模序列$m$,令$f(x)=(\cdots (x\ mod\ m[0])\ mod m[1])\mod m[2]\cdots $,问 ...

  8. POJ 3710 Christmas Game [博弈]

    题意:略. 思路:这是个删边的博弈游戏. 关于删边游戏的预备知识:http://blog.csdn.net/acm_cxlove/article/details/7854532 学习完预备知识后,这一 ...

  9. NOI模拟题4 Problem B: 小狐狸(fox)

    Solution 考虑分开统计朝向每一个方向的所有狐狸对答案的贡献. 比如说以向右为例, 我们用箭标表示每一只狐狸的方向, 用\('\)表示当前一步移动之前的每一只狐狸的位置. \[ \begin{a ...

  10. Linux下DNW源码及安装

    平台: Ubuntu12.04 + 64bit tiny4412ADK 1.首先要安装libusb-dev这个库,执行“sudo apt-get install libusb-dev”,装完之后就编译 ...