Действительно трудно сказать из кода, который вы опубликовали, но на основании вашего описания вы можете скопировать «ссылку» на коллекцию, если вы намеревались скопировать саму коллекцию.
Например, скажем,чтобы получить список с именем a
, и вы пытаетесь создать другой список с именем b
, например:
var a = new List<string>();
var b = a;
То, что на самом деле делает приведенный выше код, делает a
и b
a "ссылка "на тот же список .
Другими словами, если вы тогда сделали что-то вроде этого:
b.Add("item");
Теперь оба «списка» с именами a
и b
будут иметь одинаковые элементы.Это потому, что они на самом деле не разные списки, это один и тот же список с двумя «указателями».
Существует несколько различных способов правильного копирования списка в C #.Один из способов - передать список в конструктор следующим образом:
var a = new List<string>();
a.Add("item");
var b = new List<string>(a);
Это даст вам два отдельных списка, в каждом из которых есть элемент.Однако теперь, когда вы изменяете любой из этих списков, они не будут меняться вместе.
Популярный (более современный) альтернативный подход для приведенного выше кода может быть реализован с помощью using System.Linq
пространства имен.
var a = new List<string>();
a.Add("item");
var b = a.ToList();
Надеюсь, это поможет.