2010-11-16 3 views

ответ

2

Нет, если это класс, большинство объектов есть, только ссылка на тот же объект хранится в коллекции.

Если это тип значения, такой как int, double и structs, создается копия (а не глубокая копия, если структура имеет ссылку на объект класса, который, в свою очередь, не будет скопирован).

Edit:
Для глубокой копии объектов, сначала необходимо создать глубокую функцию копирования.
Посмотрите на Create a Deep Copy in C# или How to make a deep copy in C# ?
Затем вы можете запустить свой метод глубокой копии, прежде чем добавлять элементы в свою коллекцию.

Примечание
Это не очень часто вы действительно нуждаетесь в истинной глубокой копии. Часто лучше переосмыслить поток данных в приложении.

+0

Затем, как получить глубокую скопированную коллекцию? – user496949

1

Если вы спрашиваете о том, что происходит с коллекцией, то это зависит:

Обычно, коллекция будет создана с некоторыми «пустыми» слотами, так что добавление к нему не вызовет новую коллекцию с новым размер которого будет создан.

Если, однако, новый элемент выходит за рамки этого размера, будет создана новая коллекция, и все элементы будут скопированы на нее.


Если вы спрашиваете о самом продукте, опять-таки, это зависит:

Если тип значения (целое, двойные, структуры, например), то значение будет скопировано, если ссылочный тип, будет использоваться копия ссылки на тот же объект.

+0

@Downvoter - поясните пожалуйста. – Oded

Смежные вопросы