当前位置: 首页 > 编程语言 > C#

如何只公开IList的一个片段?分享

时间:2023-04-10 21:00:56 C#

我如何只暴露一个IList的片段?我有一个公开内部IList的类属性System.Collections.ObjectModel.ReadOnlyCollection如何在不将元素复制到新数组的情况下传递此ReadOnlyCollection的一部分(我需要实时视图,目标设备内存不足)?我的目标是CompactFramework2.0。尝试使用yieldreturn枚举:IEnumerableFilterCollection(ReadOnlyCollectioninput){foreach(Titemininput)if(/*criterionismet*/)yieldreturnitem;这些foreach示例很好,但是如果您使用.NET3.5和LINQ,则可以使它们更简洁:returnFullList.Where(i=>IsItemInPartialList(i)).ToList();您始终可以编写一个实现IList的类,并在转换索引列表后将所有调用转发给原始对象(因此它没有自己的数据副本)。您可以使用yieldreturn创建过滤列表一个实现IList(或IEnumerable,如果适合你的话)的方法,但对于索引和访问只返回所需的值。例如classEvenList:IList{privateIListinnerList;publicEvenList(IListinnerList){this.innerList=innerList;}publicobjectthis[intindex]{get{returninnerList[2*i];}set{innerList[2*i]]=value;}}//其他IList方法也类似}如何访问过滤后的元素?如果它是由Iterator提供的,那么也许您可以编写一个自定义迭代器来跳过您不想公开显示的元素?如果您需要提供一个Collection,那么您可能需要编写自己的Collection类,该类仅代理底层Collection,但阻止访问您不想公开显示的元素。(免责声明:我对C#不是很熟悉,所以这些都是笼统的答案。可能有更具体的C#答案效果更好)以上是C#学习教程:如何只暴露一个IList的片段?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: