gpt4 book ai didi

c# - 为什么 C# 的 System.Collections 库中没有 ReadOnlyList 类?

转载 作者:IT王子 更新时间:2023-10-29 04:27:28 24 4
gpt4 key购买 nike

阅读有关在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com