作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
阅读有关在 C# 中创建只读原始向量的问题(基本上,您不能这样做),
public readonly int[] Vector = new int[]{ 1, 2, 3, 4, 5 }; // You can still changes values
我了解了 ReadOnlyCollectionBase
。这是对象容器的基类,允许访问但不能修改它们的位置。甚至 Microsoft Docs 中也有示例。
ReadOnlyCollectionBase Class - 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
中?我想念它吗?它在哪里?谢谢。
最佳答案
有 ReadOnlyCollection<T>
,这是上面的通用版本。
您可以从 List<T>
创建一个直接调用list.AsReadOnly() .
关于c# - 为什么 C# 的 System.Collections 库中没有 ReadOnlyList<T> 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3832234/
我以为IEnumerable事物是可以迭代的对象。 如果他们也是ICollection你知道里面有多少元素。 如果它们是偶数 IList您可以从特定索引中获取包含对象。 一个 ReadOnlyColl
阅读有关在 C# 中创建只读原始向量的问题(基本上,您不能这样做), public readonly int[] Vector = new int[]{ 1, 2, 3, 4, 5 }; // You
我是一名优秀的程序员,十分优秀!