簡體   English   中英

Array.Copy 和 Array.CopyTo 有什么區別?

[英]What is the difference between Array.Copy and Array.CopyTo?

Array.CopyCopyTo之間有什么區別嗎? 他們只是超載了嗎?

相同的功能,不同的調用約定。 Copy是一個靜態方法,而CopyTo不是。

Array.Copy(arraySrc, arrayDest, arraySrc.length);
arraySrc.CopyTo(arrayDest, startingIndex);

仔細看看。 Copy是一個靜態方法,而CopyTo是一個實例方法。

但它們不僅在慣例上有所不同; 有一個關鍵的功能差異。

這是MSDN的摘錄:

此方法 ( Array.CopyTo ) 支持System.Collections.ICollection接口。 如果沒有明確要求實現System.Collections.ICollection ,請使用Copy以避免額外的間接性。

比較
https://msdn.microsoft.com/en-us/library/k4yx47a1.aspx
https://msdn.microsoft.com/en-us/library/06x742cw.aspx
我們會看到:

數組.復制到

  • 能夠復制多維數組。
  • 更容易指定要復制的范圍。
  • 靜態方法。

復制到

還有一些我不確定, Array.CopyTo的評論說:

此方法等效於標准 C/C++ 函數memmove ,而不是memcpy

其中CopyTo沒有這樣的描述。
確實,使用沒有參數控制范圍的CopyTo將數組的一部分復制到它自己並不容易。 不過,您可以使用ArraySegmentarray.Skip(offset).Take(length)來實現它。
而在我的測試中,這樣做是沒有問題的。

在功能上,除了 CopyTo 方法將復制數組的所有元素和 Copy 將允許您指定要復制的元素范圍之外,我不知道兩者之間是否有任何不同

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM