也许我错过了一些微不足道的东西。我有几个List<T>
s,我需要他们的一个大列表,它是所有其他列表的联合。但我确实希望他们在那个大列表中的引用,而不仅仅是值/副本(不像我通常在 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.
}
更新:我想我在问一些没有意义的东西,以及在语言中本质上不可能的东西..