我如何只公开IList <>的片段?

我有一个类属性暴露内部IList <>通过

System.Collections.ObjectModel.ReadOnlyCollection<>

如何在不将元素复制到新数组中的情况下传递ReadOnlyCollection<>的一部分(我需要一个实时视图,并且目标设备在内存上很短)? 我的目标是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/1571.html

上一篇: How can I expose only a fragment of IList<>?

下一篇: What does the Star operator mean?