我正在编写一个实现IList<T>
. 不过,我不确定要返回什么IList<T>.IsReadOnly
(继承自ICollection<T>
)。
我的班级不允许插入和删除。它确实允许通过this[int].set
属性修改项目。
MSDN指出_
只读集合不允许在集合创建后添加、删除或修改元素。
对于我的班级,这似乎意味着我必须返回true
,但在我看来,这使得该物业成为少量完全没用:据我所知,这种方法的使用如下:
客户端处理任意IList
并需要在其中插入一个元素,如果可能的话。他们可以通过调用Insert
并捕获结果来做到这一点NotSupportedException
——出于各种原因,这可能是不可取的。IsReadOnly
因此,客户端可以预先测试属性,而不是引发异常。
但是这个属性的结果是错误的,因为它混合了集合的可修改性和内容的可修改性——这是完全不相关的事情!
可以肯定的是,有IList.IsFixedSize
属性,但这是一个单独的类型(不IList<T>
扩展)。我该怎么办?也实施(我真的不喜欢这种选择)?做点别的吗?IList
IList