C# Array類的淺複製Clone()與Copy()的區別

來源:互聯網
上載者:User

標籤: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()的區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.