我想知道为什么Date结构和对象,比如C#的DateTime和Obj-C的NSDate已经变成了不可变的.
我正在寻找这种设计背后的原因以及使这些信息不可改变的好处,而不仅仅是"因为它们可以"
更新: 似乎有一个类似的问题,我的答案很棒,但专门针对Java,它可以在这里找到:为什么我们需要不可变的类?
这与我的问题的答案相结合,提供了非常丰富的信息
不变性使很多事情变得更容易.如果您不必担心某些事情可能会在您下面发生变化,那么您就不必编写许多保护代码.你不必做很多假设.事情有很多可能性,不会出错.
字符串,日期和其他类型的公共对象在现代语言中不可变是很常见的,因为它简化了编译器,框架,并且意味着编译器在进行优化时可以自由地做出假设.
要点是,只需很小的代价(如果你想改变价值就必须创建一个新的对象),你会获得很多真正的性能,稳定性和可靠性.