不可变对象是不是很好的做法?

mag*_*tic 20 .net c# immutability

我应该尽可能让我的课程不变吗?

我曾经读过Joshua Bloch撰写的"Effective Java"一书,他建议出于各种原因使所有业务对象不可变.(例如线程安全)这是否也适用于C#?

您是否尝试使对象不可变,因此在使用它们时遇到的问题较少?或者不值得为此创造它们带来的不便?

Tho*_*mas 23

不可变的Eric Lippert撰写了一系列关于该主题的博客文章.第一部分在这里.

引用他之前链接到的帖子:

ASIDE:不可变的数据结构是C#未来的发展方向.如果您知道数据结构永远不会改变,那么推理数据结构要容易得多.由于它们无法修改,因此它们是自动线程安全的.由于它们无法修改,因此您可以维护一堆过去的"快照"结构,并且突然撤消重做实现变得微不足道.在不利方面,他们确实倾向于咀嚼记忆,但是,嘿,这就是垃圾收集的发明,所以不要为此而烦恼.

  • 你们都是怪人. (27认同)
  • 我非常怀疑埃里克是不可改变的.首先,我非常确定可以观察到年龄的变化. (9认同)
  • 只有当人们考虑到他的四维自我的三维投影到当前时间时. (3认同)
  • @Thomas啊,所以你的意思是*那个*Eric Lippert?!很高兴你澄清了这一点 - 我盲目地假设你指的是Eric Lippert @ d998af36e8542af4ab858b7e69d54a8480b1ba37 :-) (3认同)
  • "你们都是"将是"你们都是",或者是更好的形式,"你们都是". (3认同)