標籤:c# array 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
程式集: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()的區別