c# - 包装数组的集合是只读的。可以在不强制转换的情况下使其可写吗?

标签 c#

我有一个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/

相关文章:

c# - 避免冲突的命名空间 - 例如?

c# - 使用javascript将paypal隐藏字段的值设置为asp控件的值

c# - 在运行时创建类型 "MyClass : OtherClass<MyClass> { }"?

c# - 不能继承Shapes

c# - Linq 查询以一对多关系搜索 "Many"

c# - Integrated Security=True 与 Encrypt=Yes 用法有什么区别?

c# - ASP.NET Web Api OData v4 - 如何通过 $metadata 反射(reflect)小数位数和精度?

c# - 如何从 C# RESTful 服务方法中检索 HTTP header 信息

c# - 格式化 DataTable 列的百分比

c# - 可以在 Xamarin Forms 中使用的汉堡包/抽屉下拉菜单?