[英]Difference and use of Array.Copy, CopyTo, and assignment of array in C#
[英]What is the difference between Array.Copy and Array.CopyTo?
Array.Copy
和CopyTo
之間有什么區別嗎? 他們只是超載了嗎?
相同的功能,不同的調用約定。 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
將數組的一部分復制到它自己並不容易。 不過,您可以使用ArraySegment
或array.Skip(offset).Take(length)
來實現它。
而在我的測試中,這樣做是沒有問題的。
在功能上,除了 CopyTo 方法將復制數組的所有元素和 Copy 將允許您指定要復制的元素范圍之外,我不知道兩者之間是否有任何不同
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.