C# 源和目标为同一阵列时,是否可以安全复制?

C# 源和目标为同一阵列时,是否可以安全复制?,c#,C#,我当前正在使用Array.Copy来移动数组: Array.Copy(array, 0, array, 1, array.Length - 1); 它比使用循环快得多。我知道其他语言(如memcpy)中的类似函数是未定义的,或者当编译器变得过于激进时,有时会中断。在.NET中考虑这个安全是合理的吗? 是的,它是安全的。在这种情况下,方法的行为方式如下: 如果sourceArray和destinationArray重叠,则此方法的行为就像在覆盖destinationArray之前,sourceA

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

Array.Copy(array, 0, array, 1, array.Length - 1);
它比使用循环快得多。我知道其他语言(如memcpy)中的类似函数是未定义的,或者当编译器变得过于激进时,有时会中断。在.NET中考虑这个安全是合理的吗? 是的,它是安全的。在这种情况下,方法的行为方式如下:

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


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