如何从SortedList <int,T>创建List <T>?

Alm*_*lmo 9 .net list sortedlist

我正在使用.net 3.5,我有这个:

SortedList<int, BrainTickTransition>
Run Code Online (Sandbox Code Playgroud)

我想要其中一个:

List<BrainTickTransition>
Run Code Online (Sandbox Code Playgroud)

有没有一个快速的方法来执行此操作而无需复制SortedList中的所有值?

Cod*_*aos 16

需要复制值,因为无法在a List<TValue>和a 之间共享内存SortedList<TKey,TValue>.

我假设您想要List<TValue>包含值而不关心键,您可以使用:

sortedList.Values.ToList();
Run Code Online (Sandbox Code Playgroud)

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

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

  • 差,差的`新List <TValue>(sortedList.Values)`.没有人想再玩它了.:-) (6认同)