Jul*_*ain 10 collections base-class-library .net-4.5
新的只读接口在.NET 4.5,如IReadOnlyCollection<T>和IReadOnlyDictionary<TKey,TValue>是非常有用的,特别是因为他们已经在通用的BCL实现,例如Collection<T>,List<T>和Dictionary<TKey,TValue>.
但是,HashSet<T>并SortedSet<T>没有升级到实现IReadOnlyCollection<T>,我看不到这个决定背后的逻辑,因为这些类匹配接口而没有任何修改或改变.是不是被BCL团队忽视了,还是我在这里缺少什么?
(这尤其令人讨厌,因为没有内置的方法将一个集合包装在一个内部IReadOnlyCollection<T>.确实,ReadOnlyCollection<T>包装IList<T>而不是ICollection<T>.我知道编写自己的包装器是微不足道的.)
Col*_*nic 13
2015年更新:在.NET 4.6中修复
只读接口在集合类型HashSet,LinkedList,Queue,SortedDictionary,SortedList,SortedSet和Stack上实现.[944715]
https://dotnet2015.blob.core.windows.net/changes/dotnet46-changes.txt
在4.5中添加IReadOnlyXxx接口的最可能的原因是,它们需要使.NET集合在WinRT项目(商店和电话应用程序)中可用。必须将集合正确映射到WinRT的IVectorView <>和IMapView <>接口。这是通过CLR中内置的语言投影自动完成的。关键在于WinRT没有等效的ISet <>接口,因此不需要更改HashSet <>。
更新:.NET 4.5.1中解决了不对称问题,毫无疑问,这要归功于大量的客户反馈:),HashSet <>现在也实现了IReadOnlyCollection <>
| 归档时间: |
|
| 查看次数: |
1583 次 |
| 最近记录: |