gpt4 book ai didi

c# - readonly 关键字不会使 List<> 只读?

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

我在公共(public)静态类中有以下代码:

public static class MyList
{
public static readonly SortedList<int, List<myObj>> CharList;
// ...etc.
}

.. 但即使使用 readonly 我仍然可以将项目添加到另一个类的列表中:

MyList.CharList[100] = new List<myObj>() { new myObj(30, 30) };

MyList.CharList.Add(new List<myObj>() { new myObj(30, 30) });

有没有办法在不改变 CharList 实现的情况下使它只读(它会破坏一些东西)?如果我确实必须更改实现(使其不可更改),最好的方法是什么?我需要它是 List ,所以 ReadOnlyCollection 不会做

最佳答案

修饰符 readonly 意味着该值不能分配,除非在声明或构造函数中。它意味着分配的对象变得不可变。

如果你希望你的对象是不可变的,你必须使用一个不可变的类型。类型 ReadOnlyCollection<T> 你提到的是不可变集合的一个例子。请参阅此相关问题,了解如何为字典实现相同的目标:

关于c# - readonly 关键字不会使 List<> 只读?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10066708/

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