閱讀英文

共用方式為


Array.ConstrainedCopy(Array, Int32, Array, Int32, Int32) 方法

定義

Array 複製某範圍的項目 (從指定的來源索引開始),並且將它們貼至另一個 Array (從指定的目的索引開始)。 如果此複本未完全成功,則保證所有的變更一定未完成。

C#
public static void ConstrainedCopy (Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);

參數

sourceArray
Array

包含要複製資料的 Array

sourceIndex
Int32

32 位元的整數,代表 sourceArray 中的索引,由此開始複製。

destinationArray
Array

接收資料的 Array

destinationIndex
Int32

32 位元的整數,代表 destinationArray 中的索引,由此開始儲存。

length
Int32

32 位元整數,表示要複製的項目數目。

例外狀況

sourceArraynull

-或-

destinationArraynull

sourceArraydestinationArray 的順位不同。

sourceArray 類型不同於、也非衍生自 destinationArray 類型。

sourceArray 至少有一個項目無法轉換成 destinationArray 的類型。

sourceIndex 小於 sourceArray 的第一個維度下限。

-或-

destinationIndex 小於 destinationArray 的第一個維度下限。

-或-

length 小於零。

length 大於從 sourceIndexsourceArray 結尾的項目數。

-或-

length 大於從 destinationIndexdestinationArray 結尾的項目數。

備註

sourceArraydestinationArray 參數必須具有相同的維度數目。 此 sourceArray 類型必須與 或 衍生自 destinationArray 類型相同, ArrayTypeMismatchException 否則會擲回 。 不同于 CopyConstrainedCopy 請先驗證陣列類型的相容性,再執行任何作業。

在多維度陣列之間複製時,陣列的行為就像長一維陣列,其中資料列 (或資料行) 在概念上配置端對端。 例如,如果陣列有三個數據列 (或資料行) 各有四個元素,則從陣列開頭複製六個元素,則會複製第一列 (或資料行) 的所有四個元素,以及第二列 (或資料行) 的前兩個元素。 若要從第三列 (或資料行) 的第二個元素開始複製, sourceIndex 必須是第一列 (或資料行) 加上第二列 (或資料行) 加上兩個數據列的長度上限。

如果 sourceArraydestinationArray 重迭,這個方法的行為就如同 在覆寫之前 destinationArray ,在暫存位置中保留的原始值 sourceArray 一樣。

[C++]

這個方法相當於標準 C/C++ 函式 memmove ,而不是 memcpy

陣列可以是參考型別陣列或實值型別陣列。 如果 sourceArraydestinationArray 都是參考型別陣列,或是 兩種型 Object 別的陣列,則會執行淺層複製。 的 Array 淺層複本是新的 Array ,其中包含與原始 Array 相同的專案參考。 不會複製專案本身或專案所參考的任何專案。 相反地,的深層複本 Array 會複製元素,以及專案直接或間接參考的所有專案。

如果此方法在複製時擲回例外狀況,則 destinationArray 維持不變;因此, ConstrainedCopy 可以在限制的執列區域內使用 (Cer) 。

這個方法是 O (n) 作業,其中 nlength

適用於

另請參閱