我有一个Collection<T>
包装数组的属性,例如
T[] array;
public Collection<T> Items
{
get { return new Collection<T>(array); }
}
当我尝试通过以下方式分配给集合时:
T variable;
Items[i] = variable;
我得到一个NotSupportedException
因为收藏的IsReadOnly
属性是 true
。事实证明,这是 Microsoft 的设计选择。有谁知道不涉及枚举的解决方法?如果底层数据不是数组,则可以完成,但我喜欢性能提升,因为数据是固定长度的。
最佳答案
不,没有办法解决这个问题。 Collection<T>
的数组实现适合只读模型,这意味着它将引发尝试写入。
如果您需要一个可变集合,那么我建议使用 List<T>
在引擎盖下而不是数组。您也可以强制它具有相同的初始大小。
关于c# - 包装数组的集合是只读的。可以在不强制转换的情况下使其可写吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2437044/