为什么没有 ReadOnlyList C# 的 System.Collections 库中的类?
通过阅读有关在 C# 中创建只读原始向量的问题(基本上,您不能这样做),
public readonly int[] Vector = new int[]{ 1, 2, 3, 4, 5 }; // You can still changes values
我了解了 ReadOnlyCollectionBase
。这是对象容器的基类,允许访问但不能修改其位置。甚至在Microsoft Docs中也有一个示例。
ReadOnlyCollectionBase 类 - Microsoft Docs
我稍微修改了示例使用任何类型:
public class ReadOnlyList<T> : ReadOnlyCollectionBase {
public ReadOnlyList(IList sourceList) {
InnerList.AddRange( sourceList );
}
public T this[int index] {
get {
return( (T) InnerList[ index ] );
}
}
public int IndexOf(T value) {
return( InnerList.IndexOf( value ) );
}
public bool Contains(T value) {
return( InnerList.Contains( value ) );
}
}
...并且它有效。我的问题是,为什么 C# 标准库中不存在这个类,可能在 System.Collections.Generic 中?我错过了吗?它在哪里? 谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有
ReadOnlyCollection
,其中是上面的通用版本。您可以通过调用 List 创建一个列表>list.AsReadOnly() 。
There is
ReadOnlyCollection<T>
, which is the generic version of the above.You can create one from a
List<T>
directly by calling list.AsReadOnly().