Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
public:
static void ConstrainedCopy(Array ^ sourceArray, int sourceIndex, Array ^ destinationArray, int destinationIndex, int length);
public static void ConstrainedCopy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);
static member ConstrainedCopy : Array * int * Array * int * int -> unit
Public Shared Sub ConstrainedCopy (sourceArray As Array, sourceIndex As Integer, destinationArray As Array, destinationIndex As Integer, length As Integer)
参数
- sourceIndex
- Int32
一个 32 位整数,表示开始复制的索引 sourceArray 。
- destinationIndex
- Int32
一个 32 位整数,表示存储开始处的索引 destinationArray 。
- length
- Int32
一个 32 位整数,表示要复制的元素数。
例外
sourceArray 并 destinationArray 具有不同的排名。
该 sourceArray 类型既不与类型相同,也不派生自该 destinationArray 类型。
不能将至少一个元素 sourceArray 强制转换为类型 destinationArray。
sourceIndex 小于第一个维度的 sourceArray下限。
-或-
destinationIndex 小于第一个维度的 destinationArray下限。
-或-
length 小于零。
length 大于从 sourceIndex 元素到末尾的 sourceArray元素数。
-或-
length 大于从 destinationIndex 元素到末尾的 destinationArray元素数。
注解
参数sourceArraydestinationArray必须具有相同数量的维度。 该 sourceArray 类型必须与类型相同或派生 destinationArray 自该类型;否则,将引发一个 ArrayTypeMismatchException 类型。 与上述不同 Copy, ConstrainedCopy 在执行任何操作之前验证数组类型的兼容性。
在多维数组之间复制时,数组的行为类似于长一维数组,其中行(或列)在概念上是端到端布局的。 例如,如果数组具有三行(或列),其中每个元素有四个元素,则从数组开头复制六个元素将复制第一行(或列)和第二行的前两个元素(或列)。 若要开始从第三行(或列)的第二个元素进行复制, sourceIndex 必须是第一行(或列)的上限加上第二行(或列)的长度加 2。
如果sourceArray和destinationArray重叠,此方法的行为就像在覆盖之前sourceArray在临时位置保留的原始值destinationArray一样。
[C++]
此方法等效于标准 C/C++ 函数 memmove,而不是 memcpy。
数组可以是引用类型数组或值类型数组。
sourceArray如果destinationArray同时是引用类型数组或两个类型Object数组,则执行浅表复制。 浅表副本 Array 是一个新的 Array 包含对与原始 Array元素相同的元素的引用。 不会复制元素本身或元素引用的任何内容。 相比之下,元素的深层副本 Array 将复制元素以及元素直接或间接引用的所有内容。
如果此方法在复制时引发异常,则 destinationArray 保持不变;因此, ConstrainedCopy 可以在受约束的执行区域(Cer)中使用。
此方法是一个 $O(n)$ 操作,其中 $n$ 为 length。