2016-08-11 3 views
0

Могу ли я создать точный дубликат списка в C#?создать точный дубликат списка строк

List<string> addedAttachments = new List<string>(); 
addedAttachments = (List<string>)HttpContext.Current.Session["UserFeedbackImage"]; 

List<string> tempList = addedAttachments; 

Магазины TempList в другом порядке

Благодаря

+0

Это просто создает новую ссылку на исходный список, а не на новый список. –

+0

Это неправда; это точно такой же список (даже не экземпляр). – SLaks

ответ

1

Чтобы создать копию, попробуйте Linq:

List<string> tempList = addedAttachments.ToList(); 
+2

Только для полноты: расширение 'ToList()' ничего не делает, кроме 'return new List (source);', поскольку 'List ' имеет конструктор 'public List (IEnumerable source)' –

3

Вы только назначить ссылку вашего первого списка addadAttachments для новой переменной, но не создавайте новый список.

Чтобы создать новый список просто вызывает

List<string> tempList = new List<string>(addedAttachments); 

Порядок строк в списках остаются неизменными.


Но обратите внимание, что это подходит только для неизменных типов, таких как string. Со списком сложных изменяемых объектов вы должны добавить те же объекты в новый список, поэтому, если вы измените свойства объекта в старом списке, также изменится «объект в новом списке» (он is измененный объект). Поэтому вам также может понадобиться скопировать объекты.

1

Поскольку у вас есть List<string> и строка неизменна вы можете сделать:

List<string> tempList = addedAttachments.ToList(); 

Если у вас есть собственный объект в списке, то вы должны искать cloning.

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