在近年C#的发展路途中,对于如何安全快速访问集合类型,一直在发生一些改变。
你可能会时不时看到从这里冒出来一个Readonly,从哪里又出来一个Immutable,又不知道在哪里看到一个Frozen。
这些不可变/只读集合到底有什么区别?又究竟是什么用途呢?
接下来我们就来介绍他们,分别适合做什么
──────────────────────────────
背景故事——为什么会有三条路线?
──────────────────────────────
-
.NET Framework 时代:只有 List/Dictionary,一切可变,全靠“君子协定”别乱改。
-
.NET 4.5:加了 ReadOnlyXxx 包装器,“我给你看,但你别动”。
-
同期 F#/Rx 带火了真正不可变的理念,System.Collections.Immutable 走上历史舞台。
-
云原生/高 QPS 时代:只读常量表成为瓶颈,.NET 8 引入 FrozenXxx,把读取性能再榨干。
Readonly系列——“套个马甲”即可上路
代表类型:
-
ReadOnlyCollection<T>
-
ReadOnlyDictionary<TKey,TValue>
-
ReadOnlyObservableCollection<T> …
这个类型仅仅是给原有集合简单封装了一次,其内部依然是可变的。但对外时,外部用户无法通过接口去修改这个集

最低0.47元/天 解锁文章
922

被折叠的 条评论
为什么被折叠?



