c# - 如何使具有 List<> 成员的类不可变?

标签 c# immutability

例如

class School
{
    public List<Student> Students {get; private set;}
}

这里 School 不是不可变的,因为 getter Students 是一个可变集合。如何使类不可变?

最佳答案

你可以公开 an immutable list相反:

class School
{
    private readonly List<Student> _students = new List<Student>();

    public ReadOnlyCollection<Student> Students
    {
        get { return _students.AsReadOnly(); }
    }
}

当然这样做对 Student 对象没有影响,所以要完全不可变,Student 对象需要是不可变的。

关于c# - 如何使具有 List<> 成员的类不可变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37169470/

相关文章:

c# - 通过扩展 DefaultControllerFactory 实现 DI 与实现 IDependencyResolver 之间的区别

c# - 当鼠标指针不在窗口中时,如何接收 MouseWheel 事件?

c# - 为什么这些是 "Special Classes"?

c# - 重载 '+' 的不可变列表是否有意义?

reactjs - 使用 ImmutableJS 对象作为 React 组件状态

c# - 如何在 C# 中使用字符串作为参数的方法

c# - 通过 IOptions 配置 .NET Core 3 Worker 服务依赖注入(inject)

TabControl 中的 C# 选项卡切换

scala - 是否可以写一个不可变的双向链表?

javascript - 强制执行不会静默失败的不变性或部分不变性