Kon*_*lph 8 .net collections msdn
我正在编写一个实现的数组包装器类IList<T>
.不过,我不确定要返回什么IList<T>.IsReadOnly
(继承自ICollection<T>
).
我的班级不允许插入和删除.它不会允许通过修改物品this[int].set
属性.
在MSDN指出,
只读集合不允许在创建集合后添加,删除或修改元素.
对于我的班级来说,这似乎意味着我必须返回,true
但在我眼中,这使得该属性成为了一个位完全没用:据我所见,这种方法的使用方法如下:
客户端处理任意操作,IList
并且如果可能的话,需要在其中插入元素.他们可以通过调用Insert
和捕获结果来做到这一点NotSupportedException
- 由于各种原因,这可能是不可取的.因此,客户可以IsReadOnly
事先测试该属性,而不是激发异常.
但是这个属性的结果将是错误的,因为它将集合的可修改性与其内容的可修改性混合在一起 - 这是完全不相关的事情!
可以肯定的,还有的IList.IsFixedSize
属性,但是这是一个独立的类型(IList<T>
也未延伸IList
).我该怎么办?还实现IList
(我真的不喜欢这个替代方案)?做点别的吗?