問題描述
將集合項複製到 .NET 中的另一個集合 (Copy collection items to another collection in .NET)
在 .NET (VB) 中,如何獲取一個集合中的所有項目,並將它們添加到第二個集合中(而不會丟失第二個集合中預先存在的項目)?我正在尋找比這更高效的東西:
For Each item As Host In hostCollection1
hostCollection2.Add(item)
Next
我的集合是通用集合,繼承自基類 ‑‑ Collection(Of )
參考解法
方法 1:
You can use AddRange: hostCollection2.AddRange(hostCollection1)
.
方法 2:
I know you're asking for VB, but in C# you can just use the constructor of the collection to initialize it with any IEnumerable. For example:
List<string> list1 = new List<string>();
list1.Add("Hello");
List<string> list2 = new List<string>(list1);
Perhaps the same kind of thing exists in VB.
方法 3:
Don't forget that you will be getting a reference and not a copy if you initialize your List2 to List1. You will still have one set of strings unless you do a deep clone.
方法 4:
I always use the List<T>.AddRange(otherList<T>)
function. Again, if this is a list of objects, they will be references the same thing.
You have not specified what sort of collection though, AddRange doesn't exist in CollectionBase inherited objects
方法 5:
This is available when one use an IList
. But AddRange
method is not available in Collection
. I thought of casting Collection
to List
, but it is not possible.
(by Matt Hanson、jop、Ben Hoffstein、David Robbins、johnc、Kangkan)