В чём разница между System.Array.CopyTo() и System.Array.Clone()?



Метод System.Array.CopyTo() выполняет глубокое копирование, копируя не только элементы самого массива, но и все объекты, на которые указывают ссылки в этих элементах. Это означает, что все связанные объекты также будут скопированы.



В отличие от этого, метод System.Array.Clone() выполняет поверхностное копирование. При этом копируются только сами элементы массива, независимо от их типа (значение или ссылка). При этом объекты, на которые указывают ссылки, не копируются, а копируются только сами ссылки, точно так же, как и в исходном массиве.



Ещё пара отличий между методами:



System.Array.CopyTo() требует наличия выходного массива, тогда как System.Array.Clone() создает новый массив.



System.Array.CopyTo() позволяет указывать индекс элемента, начиная с которого производить копирование.