Является ли Array.Copy безопасным, когда источник и получатель являются одним и тем же массивом?
В настоящее время я использую Array.Copy для перемещения массива как такового:
Array.Copy(array, 0, array, 1, array.Length - 1);
Это заметно быстрее, чем использование цикла. Я знаю, что подобные функции на других языках (например, memcpy) являются undefined или иногда ломаются, когда компилятор становится слишком агрессивным. Можно ли считать это безопасным в .NET?
Ответы
Ответ 1
Да, это безопасно. документировано, как метод должен вести себя в этом случае:
Если sourceArray и destinationArray перекрываются, этот метод ведет себя так, как если бы исходные значения sourceArray были сохранены во временном местоположении до того, как файл destinationArray будет перезаписан.