2012-04-30 5 views
6

Это должен быть довольно простой вопрос, но у меня возникли проблемы с поиском определенного ответа.В C# делает Array.ToArray() выполнение DEEP-копии?

Когда у вас есть массив значений, и вы используете метод .ToArray(), он создает глубокую или мелкую копию массива?

+0

Я действительно искал ответ на это в Интернете, прежде чем я написал для него быстрый тест (что не так быстро, как поиск в Интернете). Я думаю, что причина для рейтинга -1 в вопросе заключается только в том, что вы недопонимаетесь между Deep copy, Shallow copy и ссылкой на объекты (что вы, вероятно, называете мелкой копией). – capn

ответ

13

Вы можете легко проверить это, написав небольшую программу для тестирования.

+0

+1. Обратите внимание, что если это массив структуры, он будет копировать значения (еще мелкая копия). –

+0

Я только что создал небольшую программу со строкой [] с тремя элементами в ней, затем создал новый массив с = origArray.ToArray() Затем я изменил один элемент в новом массиве и распечатал оба массива, и они там, где разные, разве это не означает, что это глубокая копия? что я пересматриваю? – hrh

+2

Нет встроенного способа сделать глубокую копию на C#, поэтому, вероятно, ваше определение «глубокое» необычно. Подумайте о новом вопросе «что такое глубокая копия, вот мое понимание ...» (не забудьте четко объяснить, как вы это понимаете, чтобы другие люди могли подтвердить/прокомментировать, какая часть вашего понимания неверна или нетрадиционна) , –