C# Array類的淺復制Clone()與Copy()的差別
阿新 • • 發佈:2017-05-13
類型轉換 靜態方法 eof copy copies 重載 arr object c dex
程序集: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中(從指定的目標索引開始)。
例: 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為靜態方法。
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長度和索引指定為64位整數
public static void Copy(Array sourceArray, long sourceIndex,Array destinationArray, long destinationIndex,long length)Clone()會創建一個新數組。Copy方法必須傳遞階數同樣且有足夠元素的已有數組。
C# Array類的淺復制Clone()與Copy()的差別