2012-06-22 18 views
24

我目前使用Array.Copy到一個數組轉變爲這樣:當源和目標是相同的數組時,Array.Copy是否安全?

Array.Copy(array, 0, array, 1, array.Length - 1); 

這比使用循環明顯加快。我知道其他語言(如memcpy)中的類似函數未定義,或者在編譯器過於激進時有時會中斷。在.NET中認爲這是安全的是合理的嗎?

回答

28

是的,它是安全的。這是documented的方法應該如何表現在這種情況下:

如果sourceArray和destinationArray重疊,此方法的行爲好像sourceArray的原始值在一個臨時位置被保存之前destinationArray被覆蓋。

+0

這是因爲使用的基本函數是memmove,它允許內存重疊。 – Rahly

相關問題