2011-12-08 18 views
7

Tôi đang làm việc với Net 3.5, và tôi có điều này:Làm cách nào để tạo Danh sách <T> từ một SortedList <int, T>?

SortedList<int, BrainTickTransition> 

Và tôi muốn một trong những:

List<BrainTickTransition> 

Có một cách nhanh chóng để làm điều này mà không cần phải sao chép tất cả của các giá trị từ SortedList?

+0

Xem xét thuộc tính SortedList.Values. –

+0

Tôi có một datacontract mà serializes một List , đó là lý do tại sao tôi cần danh sách . – Almo

Trả lời

11

Các giá trị cần được sao chép, bởi vì không có cách nào để chia sẻ bộ nhớ giữa List<TValue>SortedList<TKey,TValue>.

tôi giả sử bạn muốn có một List<TValue> chứa các giá trị mà không cần quan tâm đến các phím mà bạn có thể làm với:

sortedList.Values.ToList(); 

Nhưng nếu bạn chỉ cần một IList<TValue> (như trái ngược với lớp bê tông List<TValue>), bạn có thể trực tiếp sử dụng thuộc tính Values và do đó tránh tạo bản sao.

Tất nhiên, các giải pháp này khác nhau về ngữ nghĩa khi bộ sưu tập gốc được sửa đổi. Bản sao List<TValue> sẽ không phản ánh các thay đổi, trong khi IList<TValue> được tham chiếu bởi thuộc tính Values, sẽ phản ánh các thay đổi, ngay cả khi bạn gán cho một biến khác.

+0

Có vẻ như vậy, cảm ơn. Trả lời được chấp nhận sau khi hết giờ. :) – Almo

+4

Danh sách mới kém, nghèo ' (được sắp xếpList.Values) '. Noone muốn chơi với nó nữa. :-) – Jon

Các vấn đề liên quan