2011-12-08 45 views
7

我与.NET 3.5的工作,我有这样的:如何从SortedList <int, T>创建列表<T>?

SortedList<int, BrainTickTransition> 

而且我想其中的一个:

List<BrainTickTransition> 

是否有一个快速的方法来做到这一点,而不必复制所有来自SortedList的值?

+0

考虑SortedList.Values属性。 –

+0

我有一个datacontract序列化List ,这就是为什么我需要列表。 – Almo

回答

11

这些值需要复制,因为无法共享List<TValue>SortedList<TKey,TValue>之间的内存。

我假设你想要包含的值的List<TValue>,而无需关心键,你可以用做:

sortedList.Values.ToList(); 

但如果你只是需要一个IList<TValue>(而不是具体的类List<TValue>),你可以直接使用Values属性,从而避免创建副本。

当然,当原始集合被修改时,这些解决方案的语义不同。 List<TValue>副本不会反映更改,而Values属性引用的IList<TValue>将反映更改,即使将其分配给另一个变量也是如此。

+0

看起来就是这样,谢谢。在定时器耗尽后接受答案。 :) – Almo

+4

差,新'清单(sortedList.Values)'。没有人想再玩它了。 :-) – Jon