Как скопировать List без клонирования

Возможно, я упускаю что-то тривиальное. У меня есть пара List<T>и мне нужен один большой список из них, который является объединением всех остальных списков. Но мне нужны их ссылки в этом большом списке, а не только значения/копии (, в отличие от многих вопросов, которые я обычно нахожу в SO ).

Например, у меня есть это,

List<string> list1 = new List<string> { "a", "b", "c" };
List<string> list2 = new List<string> { "1", "2", "3" };

var unionList = GetThatList(list1, list2);

Предположим, я получаю нужный мне список в unionList, тогда должно произойти это:

unionList.Remove("a"); => list1.Remove("a");
unionList.Remove("1"); => list2.Remove("1");

//in other words
//
//unionList.Count = 4;
//list1.Count = 2;
//list2.Count = 2;

Чтобы было понятно, это обычно происходит с

unionList = list1; //got the reference copy.

Но как мне поступить со вторым списком, list2, чтобы добавить к unionList?

Я пробовал Addи AddRange, но они явно клонируют, а не копируют.

unionList = list1;
unionList.AddRange(list2); //-- error, clones, not copies here.

и

foreach (var item in list2)
{
    unionList.Add(item); //-- error, clones, not copies here.
}

Обновление:Я думаю, что спрашиваю что-то, что не имеет смысла, и что-то, что по своей сути невозможно в языке..

7
задан nawfal 28 July 2012 в 22:31
поделиться