System.Array.Copy 方法 (Array, Array, Int64)

方法描述

从第一个元素开始复制 Array 中的一系列元素,将它们粘贴到另一 Array 中(从第一个元素开始)。 长度指定为 64 位整数。

语法定义(C# System.Array.Copy 方法 (Array, Array, Int64) 的用法)

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

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
sourceArray System-Array Array ,它包含要复制的数据。
destinationArray System-Array Array ,它接收数据。
length System-Int64 一个 64 位整数,它表示要复制的元素数目。该整数必须介于零和 Int32.MaxValue 之间(均含)。
返回值 void

提示和注释

sourceArray 和 destinationArray 参数必须具有相同的维数。

当在多维数组之间复制时,数组像长一维数组那样操作,在此行(或列)在概念上首尾相连。 例如,如果一个数组有三行(或列),每一行(或列)带有四个元素,若要从数组的开始复制六个元素,则会复制第一行(或列)的所有四个元素和第二行(或列)的头两个元素。

如果 sourceArray 和 destinationArray 重叠,那么在覆盖 destinationArray 之前,此方法的行为好像 sourceArray 的原始值保留在临时位置那样。

[C++]

此方法等效于标准 C/C++ 函数 memmove,而不是 memcpy。

数组可以是引用类型的数组或值类型的数组。 按需要执行类型向下转换。

在从引用类型的数组复制到值类型的数组时,每一个元素都要取消装箱,然后再复制。 在从值类型的数组复制到引用类型的数组时,每一个元素都要装箱,然后再复制。

在从引用类型或值类型的数组复制到 Object 数组时,会创建 Object 以保存每一个值或引用,然后再复制。 在从 Object 数组复制到引用类型或值类型的数组,且不可能进行分配时,将引发 InvalidCastException。

如果 sourceArray 和 destinationArray 都是引用类型的数组或都是 Object 类型的数组,则执行浅表复制。 Array 的浅表副本是包含对与原始 Array 相同的元素的引用的新 Array。 不复制元素本身和元素引用的任何内容。 相比之下,Array 的深层副本会复制元素和元素直接或间接引用的一切。

如果数组是不兼容的类型,则会引发 ArrayTypeMismatchException。 类型兼容性的定义如下:

类型与其本身兼容。

值类型与 Object 兼容,也与该值类型实现的接口类型兼容。 只有当值类型直接实现一个接口时,该值类型才算与该接口连接。 断开连接的类型不兼容。

如果从源类型复制到目标类型是扩大转换,则两个内部(预定义)值类型兼容。 扩大转换从不会丢失信息,而收缩转换可能会丢失信息。 例如,将 32 位有符号的整数转换为 64 位有符号的整数是扩大转换,而将 64 位有符号的整数转换为 32 位有符号的整数是收缩转换。 有关转换的更多信息,请参见 Convert。

非内部(用户定义)值类型只与其本身兼容。

枚举具有到 Enum 的隐式转换,也有到其基础类型的隐式转换。

如果 sourceArray 中的每个元素都要求向下转换(例如,从基类转换到派生类或从接口转换到对象),且一个或多个元素无法强制转换为 destinationArray 中的对应类型,则会引发 InvalidCastException。

如果此方法在复制时引发异常,则 destinationArray 的状态未定义。

此方法的运算复杂度为 O(n),其中 n 是 length。

System.Array.Copy 方法 (Array, Array, Int64)例子


异常

异常 异常描述
ArgumentNullException
  • sourceArray 为 null。
  • destinationArray 为 null。
RankException sourceArray 和 destinationArray 的秩不同。
ArrayTypeMismatchException sourceArray 和 destinationArray 是不兼容的类型。
InvalidCastException sourceArray 中的至少一个元素无法强制转换为 destinationArray 类型。
ArgumentOutOfRangeException length 小于零或大于 Int32.MaxValue。
ArgumentException
  • length 大于 sourceArray 中的元素数。
  • length 大于 destinationArray 中的元素数。

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。