Подтвердить что ты не робот

Является ли Array.Copy безопасным, когда источник и получатель являются одним и тем же массивом?

В настоящее время я использую Array.Copy для перемещения массива как такового:

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

Это заметно быстрее, чем использование цикла. Я знаю, что подобные функции на других языках (например, memcpy) являются undefined или иногда ломаются, когда компилятор становится слишком агрессивным. Можно ли считать это безопасным в .NET?

4b9b3361

Ответ 1

Да, это безопасно. документировано, как метод должен вести себя в этом случае:

Если sourceArray и destinationArray перекрываются, этот метод ведет себя так, как если бы исходные значения sourceArray были сохранены во временном местоположении до того, как файл destinationArray будет перезаписан.