【发布时间】:2010-09-26 00:46:50
【问题描述】:
我正在创建一个不可变类。
我已将所有属性标记为只读。
我有一个班级项目列表。
虽然如果属性是只读的,则可以修改列表。
公开列表的 IEnumerable 使其不可变。
我想知道使类不可变必须遵循的基本规则是什么?
【问题讨论】:
-
我强烈建议您阅读Eric Lippert's blog series on immutability,尤其是"kinds of immutability" 上的条目。您对“暴露列表的 IEnumerable 使其不可变”的评论对我来说似乎有些奇怪。你这是什么意思?
-
我的意思是,允许用户使用 IEnumerable 访问成员,而不是允许访问列表(如果对象有其他对象的列表)。这里的谈话列表就像一个具体的例子,但它可以是任何数据结构。
-
Jon Skeet 与 Eric Lippert 的博客系列的链接在 MSDN 归档这些博客时已断开。请参阅"kinds of immutability"。该系列的其余部分似乎在 2007 年 12 月 + 2008 年 1 月的左侧面板中。
-
请参阅 Eric Lippert 的博客系列,了解人们通常如何混淆
atomicity、volatility和immutability:Part One、Part Two 和 Part Three 等术语。这些来自他的个人博客,我相信,比他的 MSDN 帖子更适合新手。
标签: c# .net immutability