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

Вроде и то и другое копирует массив. В чём разница между ними?

Первый метод копирует не только сами элемента класса Array, но и всякие объекты, которые связаны ссылками с этими элементами Array. Это всё называется "глубоким копированием".

Второй метод осуществляет так называемое "поверхностное копирование". При поверхностном копировании метод копирует только элементы объекта класса Array, и методу не важно, являются ли эти элементы value или reference типами. Копирование объектов которые связаны какими-то ссылками не происходит, а сами ссылки коируются так же, как и в оригинальном Array.