我正在编写一个实现
我的类禁止插入和删除。它允许通过
客户端处理任意
但是,该属性的结果将是 错误的,因为它将集合的可修改性与其内容的可修改性混淆在一起 - 这些是完全无关的问题!
当然,有
IList<T>
接口的数组包装类,但我不确定要为 IList<T>.IsReadOnly
(从 ICollection<T>
继承)返回什么值。我的类禁止插入和删除。它允许通过
this[int].set
属性修改项目。
MSDN 中指出:
对于我的类来说,这似乎意味着我必须返回只读集合在创建后不允许添加、删除或修改元素。
true
,但在我看来,这使得该属性完全无用:据我所知,使用此方法的方式如下:客户端处理任意
IList
并需要将元素插入其中,如果可能的话。他们可以通过调用 Insert
并捕获生成的 NotSupportedException
来完成此操作 - 出于各种原因,这可能是不可取的。因此,客户端可以事先测试 IsReadOnly
属性,而不是引发异常。但是,该属性的结果将是 错误的,因为它将集合的可修改性与其内容的可修改性混淆在一起 - 这些是完全无关的问题!
当然,有
IList.IsFixedSize
属性,但这是一个单独的类型(IList<T>
不扩展 IList
)。我该怎么办?还要实现 IList
吗(我真的不喜欢这个选择)?做些其他的事情吗?