How can I expose only a fragment of IList<>?
I have a class property exposing an internal IList<> through
System.Collections.ObjectModel.ReadOnlyCollection<>
How can I pass a part of this ReadOnlyCollection<>
without copying elements into a new array (I need a live view, and the target device is short on memory)? I'm targetting Compact Framework 2.0.
尝试使用yield返回枚举的方法:
IEnumerable<T> FilterCollection<T>( ReadOnlyCollection<T> input ) {
foreach ( T item in input )
if ( /* criterion is met */ )
yield return item;
}
这些foreach示例都很好,但如果您使用.NET 3.5和LINQ,则可以使它们更简洁:
return FullList.Where(i => IsItemInPartialList(i)).ToList();
翻译索引后,您总是可以编写一个实现IList的类并将所有调用转发到原始列表(因此它没有自己的数据副本)。
链接地址: http://www.djcxy.com/p/1572.html上一篇: 在C#中使用var关键字
下一篇: 我如何只公开IList <>的片段?