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

Zon*_*ong 28 c#

我目前正在使用Array.Copy来移动数组:

Array.Copy(array, 0, array, 1, array.Length - 1);
Run Code Online (Sandbox Code Playgroud)

它比使用循环更快.我知道其他语言中的类似函数(例如memcpy)是未定义的,或者有时会在编译器过于激进时中断.在.NET中考虑这种安全性是否合理?

Mar*_*ers 32

是的,这是安全的.它记载的方法应该如何表现在这种情况下:

如果sourceArray和destinationArray重叠,则此方法的行为就像在覆盖destinationArray之前将sourceArray的原始值保留在临时位置中一样.

  • 这是因为使用的基本函数是 memmove,它允许内存重叠。 (3认同)