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. glRectf(-0.5f, -0.5f, 0.5f, 0.5f)

    http://bbs.csdn.net/topics/370049656 x向右,y向上时OPENGL坐标系,z向屏幕外表示正方向(-0.5,-0.5)是左下角坐标,(0.5,0.5)是右上角坐标,, ...

  2. 打造好用的编辑终端环境yakuake

    我喜欢使用vim,由于不喜欢不够纯粹的东西,所以将伪终端打造的和真终端几乎一样,我的yakuake全屏是真的全屏,你也想这样,跟我来吧. 一.修改yakuake的皮肤文件,在/usr/share/ya ...

  3. PHP安装oracle的php_oci和oci8扩展

    环境:centos6.9 php5.3.3 oracle客户端:下载链接:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277 ...

  4. python-rtslib 模块

    Python library for configuring the Linux kernel-based multiprotocol SCSI target (LIO) A Python objec ...

  5. Codeforces 899 C.Dividing the numbers-规律

      C. Dividing the numbers   time limit per test 1 second memory limit per test 256 megabytes input s ...

  6. sqld360

    https://mauro-pagano.com/2017/04/15/sql-monitoring-flamegraph-and-execution-plan-temperature-2-0/ ht ...

  7. JavaScript中的普通函数和箭头函数

    最近被问到了一个问题: javaScript 中的箭头函数 ( => ) 和普通函数 ( function ) 有什么区别? 我当时想的就是:这个问题很简单啊~(flag),然后做出了错误的回答 ...

  8. 队列容易queue

    /*先进先出*/#include<iostream>#include<queue> //使用队列必须包含头文件using namespace std;int main(){ q ...

  9. 【GLSL教程】(五)卡通着色 【转】

    http://blog.csdn.net/racehorse/article/details/6641623 引言 卡通着色可能是最简单的非真实模式shader.它使用很少的颜色,通常是几种色调(to ...

  10. vue2.0中怎么获取元素

    在元素上添加 v-el:food-wrapper (不用驼峰的写法) vue1版本 报错: vue2版本 (vue2把vue1中的 v-el 改为了 ref vue1 v-el:foods-wrapp ...