当源数组和目标数组是同一个数组时,使用Array.Copy是否安全?

46

我目前正在使用Array.Copy将数组进行移位操作,如下:

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

使用这种方法比使用循环明显更快。我知道在其他编程语言中类似的函数(例如memcpy)可能是未定义的,有时当编译器过于激进时会出现问题。在.NET中考虑使用这种方法是否安全?

1个回答

53

是的,这是安全的。该方法应如何在此情况下运行已经记录

如果sourceArray和destinationArray重叠,该方法会模拟将sourceArray的原始值保存在临时位置中,然后再覆盖destinationArray。


6
这是因为所使用的基本函数是memmove,它允许内存重叠。 - Rahly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接